ScrollView и HorizontalScrollView
При большом количестве информации, которую нужно поместить на экране приходится использовать полосы прокрутки. В Android существуют специальные компоненты ScrollView и HorizontalScrollView, которые являются контейнерными элементами и наследуются от ViewGroup. Обратите внимание, что класс TextView использует свою собственную прокрутку и не нуждается в добавлении отдельных полос прокрутки. Но использование отдельных полос даже с TextView может улучшить вид вашего приложения и повышает удобство работы для пользователя.
На панели инструментов компоненты можно найти в разделе Containers.
В контейнеры ScrollView и HorizontalScrollView можно размещать только один дочерний элемент (обычно LinearLayout), который в свою очередь может быть контейнером для других элементов. Виджет ScrollView, несмотря на свое название, поддерживает только вертикальную прокрутку, поэтому для создания вертикальной и горизонтальной прокрутки необходимо использовать ScrollView в сочетании с HorizontalScrollView. Обычно ScrollView используют в качестве корневого элемента, а HorizontalScrollView в качестве дочернего. Можно и наоборот, пробуйте.
В в теле метода onCreate() создайте ссылку на элемент TextView, объявленный в XML-разметке, и запишите в него через метод setText() какой-нибуль длинный текст, который не поместится в видимые размеры экрана устройства:
Запустив проект, вы должны увидеть вертикальную и горизонтальную полосы прокрутки при попытке скролирования.
Если полосы прокрутки вас раздражают, то используйте атрибут android:scrollbars=»none», который скроет их.
По такому же принципу можете вложить ImageView, чтобы просматривать большие картинки:
Методы scrollBy() и scrollTo()
Вы можете программно прокручивать контент с помощью методов scrollBy() и scrollTo(). Например, можно организовать автоматическую прокрутку во время чтения. В нашем примере мы будем прокручивать контент с помощью трёх кнопок.
Сам код для методов:
Дополнительное чтение
Библиотека ParallaxScrollView с использованием эффекта параллакса. Вы прокручиваете длинный текст, а задний фон прокручивается чуть медленнее. Возможно, кому-то пригодится. Там же можно скачать готовое демо и просмотреть в действии.
Источник
Делаем TextView прокручиваемым на Android
Я отображаю текст в текстовом представлении, которое кажется слишком длинным, чтобы поместиться на одном экране. Мне нужно сделать мой TextView прокручиваемым. Как я могу это сделать?
Вам не нужно использовать на ScrollView самом деле.
свойства вашего TextView в XML-файле вашего макета.
Бинго, это свитки!
Вот как я сделал это чисто в XML:
НОТЫ:
android:fillViewport=»true» в сочетании с android:layout_weight=»1.0″ заставит textview занять все доступное пространство.
При определении Scrollview НЕ указывайте, android:layout_height=»fill_parent» иначе scrollview не работает! (это заставило меня потратить впустую час только сейчас! FFS).
PRO TIP:
Чтобы программно прокрутить до конца после добавления текста, используйте это:
Все, что действительно необходимо, это setMovementMethod (). Вот пример использования LinearLayout.
Файл main.xml
Файл WordExtractTest.java
Сделайте свое текстовое представление просто добавив это
Не нужно ставить в
Вы можете сделать свою работу, просто добавив:
И поместите этот код в свой класс Java:
Вы также можете
- окружить TextView собой ScrollView ; или
- установите метод Movement в ScrollingMovementMethod.getInstance(); .
Лучший способ, который я нашел:
Замените TextView на EditText с этими дополнительными атрибутами:
Там нет необходимости для упаковки в ScrollView.
Просто. Вот как я это сделал:
Бонус:
Чтобы текстовое представление прокручивалось вниз по мере заполнения текста, вы должны добавить:
в текстовый XML-файл. Он будет прокручиваться автоматически по мере поступления текста.
Конечно, вам нужно добавить текст, используя функцию добавления вместо набора текста:
Я использовал это для целей журнала.
Надеюсь, это поможет 😉
Это «Как применить ScrollBar к вашему TextView», используя только XML.
Во-первых, вам нужно взять элемент управления Textview в файле main.xml и записать в него некоторый текст . вот так:
Затем поместите элемент управления представлением текста между областью прокрутки, чтобы отобразить полосу прокрутки для этого текста:
Это обеспечит плавную прокрутку текста с помощью полосы прокрутки.
«Про наконечник» выше от кого — то Где — то ( Создания TextView Прокручиваемого на Android ) прекрасно работает, однако, что , если вы динамически добавлять текст к ScrollView и хотели бы автоматически прокрутки на дно после Append только тогда, когда пользователь находится в нижней части ScrollView? (Возможно, потому что, если пользователь прокрутил что-то, чтобы прочитать что-то, вы не хотите автоматически сбрасывать его во время добавления, что будет раздражать.)
Во всяком случае, вот оно:
MTextStatus.getLineHeight () сделает так, чтобы вы не использовали scrollToBottom (), если пользователь находится в пределах одной строки от конца ScrollView.
Если вы хотите, чтобы текст прокручивался в текстовом представлении, вы можете выполнить следующие действия:
Сначала вы должны создать подкласс textview.
И затем используйте это.
Ниже приведен пример просмотра подкласса текста.
Теперь вы должны использовать это в XML следующим образом:
Добавьте следующее в текстовое представление в XML.
И, наконец, добавить
Я не нашел прокрутки TextView для поддержки жеста «броска», когда он продолжает прокручиваться после пролистывания вверх или вниз. Я сам реализовал это, потому что не хотел использовать ScrollView по разным причинам, и, похоже, не было MovementMethod, который позволял бы мне выбирать текст и нажимать на ссылки.
В kotlin для того, чтобы сделать прокручиваемый текстовый вид
а также добавить в XML это свойство
Когда вы закончите с прокруткой, добавьте эту строку в последнюю строку представления, когда вы вводите что-либо в представление:
Если вы не хотите использовать решение EditText, то вам может повезти с:
Добавьте это к вашему XML-макету:
И в коде вы должны написать следующие строки:
Код ниже создает автоматическую горизонтальную прокрутку текста:
При добавлении TextView для использования XML
Установите следующие свойства TextView в onCreate ()
Вы можете прокрутить его сейчас.
Используйте это так
В моем случае. Ограничение Layout.AS 2.3.
Я боролся с этим больше недели и наконец понял, как заставить это работать!
Моя проблема заключалась в том, что все будет прокручиваться как «блок». Сам текст прокручивался, но скорее как кусок, чем строка за строкой. Это, очевидно, не работает для меня, потому что это будет отрезать линии внизу. Все предыдущие решения не работали для меня, поэтому я разработал собственное.
Вот самое простое решение на сегодняшний день:
Создайте файл класса с именем: ‘PerfectScrollableTextView’ внутри пакета, затем скопируйте и вставьте этот код в:
Наконец, измените ваш TextView в XML:
Положите maxLines и scrollbars внутри TextView в XML.
Тогда в коде Java.
У меня была эта проблема, когда я использовал TextView внутри ScrollView . Это решение сработало для меня.
всякий раз, когда вам нужно использовать ScrollView в качестве родителя , а также вы используете метод перемещения прокрутки с TextView.
А при портретной ориентации вашего устройства в это время возникают некоторые проблемы . (например) вся страница прокручивается, но метод перемещения прокрутки не может работать.
если вам все еще нужно использовать ScrollView в качестве родительского метода или метода прокрутки, то вы также используете ниже desc.
Если у вас нет никаких проблем, тогда вы используете EditText вместо TextView
Здесь EditText ведет себя как TextView
Источник
Создание прокрутки TextView на Android
я отображаю текст в textview, который кажется слишком длинным, чтобы соответствовать на один экран. Мне нужно сделать мой виджет TextView с прокруткой. Как мне это сделать? это?
24 ответов
вам не нужно использовать ScrollView на самом деле.
свойства TextView в xml-файле вашего макета.
Бинго, она прокручивается!
вот как я это сделал чисто в XML:
Примечания:
android:fillViewport=»true» в сочетании с android:layout_weight=»1.0″ заставит textview занять все доступное пространство.
при определении Scrollview не указывайте android:layout_height=»fill_parent» в противном случае scrollview не работает! (из-за этого я только что потерял целый час! ФФС.)
PRO СОВЕТ:
программно прокрутите вниз после добавления текста, используйте это:
все, что действительно необходимо, это setMovementMethod (). Вот пример использования LinearLayout.
main.в XML WordExtractTest.java
сделайте свой textview просто добавив Это
не надо ставить в
вы можете сделать свою работу, просто добавив:
и поместите этот код в свой класс Java:
- вокруг TextView на ScrollView ; или
- установите метод перемещения в ScrollingMovementMethod.getInstance(); .
лучший способ, который я нашел:
замените TextView на EditText следующими дополнительными атрибутами:
нет необходимости в обертывании в ScrollView.
Это «как применить полосу прокрутки к вашему TextView», используя только XML.
во-первых, вам нужно взять элемент управления Textview в main.в XML файл и записать в него текст . вот так:
затем поместите элемент управления text view между scrollview для отображения полосы прокрутки для этого текста:
простой. Вот как я это сделал:—5—>
бонус:
чтобы текстовый вид прокручивался вниз по мере его заполнения, вы должны добавить:
в xml-файл TextView. Он будет прокручиваться вниз автоматически, как больше текста приходит.
конечно, вам нужно добавить текст с помощью функции append вместо set текст:
я использовал его для журнала.
надеюсь, это поможет;)
«pro tip» выше от кого-то где-то (создание прокрутки TextView на Android) отлично работает, однако, что делать, если вы динамически добавляете текст в ScrollView и хотели бы автоматически прокручивать вниз после добавления только когда пользователь находится в нижней части ScrollView? (Возможно, потому, что если пользователь прокрутил вверх, чтобы прочитать что-то, что вы не хотите автоматически сбрасывать вниз во время добавления, которое будет раздражающий.)
в любом случае, вот это:
в mTextStatus.getLineHeight() сделает это так, что вы не scrollToBottom (), если пользователь находится в пределах одной строки от конца ScrollView.
Это обеспечит плавную прокрутку текста с полосой прокрутки.
Если вы хотите, чтобы текст прокручивался в textview, вы можете выполнить следующее:
сначала вам нужно подкласс textview.
и затем использовать это.
Ниже приведен пример подкласса textview.
теперь, вы должны использовать это в XML следующим образом:
Я не нашел прокрутки TextView для поддержки жеста «бросок», где он продолжает прокрутку после щелчка вверх или вниз. Я закончил тем, что реализовал это сам, потому что я не хотел использовать ScrollView по разным причинам, и, похоже, не было MovementMethod, который позволял мне выбирать текст и нажимать на ссылки.
добавьте следующее в textview в XML.
и, наконец, добавить
когда вы закончите с прокруткой, добавьте эту строку в последнюю строку представления при вводе чего-либо в представлении:
добавьте это в свой XML-макет:
и в коде вы должны написать следующие строки:
Если вы не хотите использовать решение EditText, вам может повезти с:
код ниже создает автоматическую горизонтальную прокрутку textview:
при добавлении TextView в xml используйте
задайте следующие свойства TextView в onCreate ()
используйте его так
в моем случае.Макет Ограничения.В качестве 2.3.
я боролся с этим больше недели и, наконец, понял, как это сделать!
моя проблема заключалась в том, что все будет прокручиваться как «блок». Сам текст прокручивался, но как кусок, а не строка за строкой. Это, очевидно, не сработало для меня, потому что это отрезало бы линии внизу. Все предыдущие решения не работали для меня, поэтому я создал свой собственный.
вот самое простое решение на сегодняшний день:
создайте файл класса: ‘PerfectScrollableTextView’ внутри пакета, затем скопируйте и вставьте этот код в:
наконец, измените свой «TextView» в XML:
поставить maxLines и scrollbars внутри TextView в xml.
затем в коде java.
у меня была эта проблема, когда я использовал TextView внутри ScrollView . Это решение сработало для меня.
всякий раз, когда вам нужно используйте ScrollView в качестве родителя, и вы также используете метод перемещения прокрутки с TextView.
и портрет для ландшафтного устройства, что время происходят некоторые проблемы. (например) вся страница прокручивается, но метод перемещения прокрутки не может работать.
Если вам все еще нужно использовать ScrollView в качестве родительского или метода перемещения прокрутки, вы также используете ниже desc.
Если у вас нет никаких проблем затем вы используете EditText вместо TextView
здесь EditText ведет себя как TextView
Источник
Прокрутка текста в TextView без ScrollView
Не работает прокрутка текста. Справа виден ползунок прокрутки, но прокрутка пальцем (или мышкой в эмуляторе) НЕ работает. (Тестировал в эмуляторе и на реальном устройстве).
В чем может быть дело? Как сделать прокрутку текста в TextView без использования дополнительного компонента ScrollView?
IsSelectable textview in ScrollView
Как понятно из названия темы, у меня хватило ума втулить isSelectable textview в ScrollView.
TextView и ListView с единой прокруткой ScrollView(?)
Всем привет, столкнулся с проблемой при одновременном отображении ListView и TextView . Не.
Автоматическая прокрутка ScrollView
Имеется ScrollView, а внутри него LinearLayout, в котором находятся кнопки. Как сделать так, чтобы.
Прокрутка ScrollView колесом мыши
Здравствуйте. Возник такой вопрос: при прокрутке колесиком ScrollViewer прокручивается по.
Добавлено через 8 минут
Модераторам: Ну-ну. не стоит приписывать мне код своими изменениями сообщения. добавил (с)
Не буду забиваться, но, судя по документации, — вряд ли.
Почему?
Смотрим
public final MovementMethod getMovementMethod ()
Added in API level 1
Returns
the movement method being used for this TextView. This will frequently be null for non-EditText TextViews.
public final void setMovementMethod (MovementMethod movement)
Added in API level 1
Sets the movement method (arrow key handler) to be used for this TextView. This can be null to disallow using the arrow keys to move the cursor or scroll the view.
Be warned that if you want a TextView with a key listener or movement method not to be focusable, or if you want a TextView without a key listener or movement method to be focusable, you must call setFocusable(boolean) again after calling this to get the focusability back the way you want it.
Прокрутка ScrollView (плваность и позиция)
Есть scrollView (vertical), внутри расположены Button (10 штук) При нажатии на первый (верхний).
ScrollView вертикальная прокрутка, ползунок с двух сторон
Добрый день. Как реализовать прокрутку, чтоб ползунок был с двух сторон, слева и справа? .
Прокрутка TextView по вертикали который вложен в ViewPager
Дано: ViewPager, в котором находится TextView. Задача: Когда текст в TextView не вмещается на.
Выделение текста в TextView
При выделении текста в TextView android:textIsSelectable=»true» на моем устройстве(HTC ONE X.
Источник