Создание прокрутки 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
Источник
Working with the ScrollView
When an app has layout content that might be longer than the height of the device and that content should be vertically scrollable, then we need to use a ScrollView.
To make any content vertically scrollable, simply wrap that content in a ScrollView :
Note that a ScrollView can only contain a single child element so if you need multiple things to be scrollable, you need to wrap that content into a layout as shown above.
In certain situations, you want to position content beneath the end of the scrollable content area. For example for a «terms of service» where you can only accept once you’ve scrolled through all the content. In this case, you might need to apply the android:fillViewport property to «true». Read this post by Romain Guy for a detailed look at this use case.
Note that a TextView doesn’t require a ScrollView and if you just need a scrolling TextView simply set the scrollbars property and apply the correct MovementMethod :
and then in the activity:
Now the TextView will automatically scroll vertically.
In other cases, we want content to horizontally scroll in which case we need to use the HorizontalScrollView instead like this:
and now you have a horizontally scrolling view.
Adding a ScrollView within another ScrollView can be difficult. Most of the times it won’t end well. You will end up adding few workarounds. Instead, use the NestedScrollView as outlined here. A working sample can be found here as this is very useful when working with CoordinatorLayout
Источник
Делаем 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
Источник
Android Scrollable TextView | Vertical Using XML and Programmatically
Making TextView scrollable on Android you need to use a android:scrollbars properties of your TextView in your layout’s XML file.
Then use the below code in the Activity file. This method will enable scrolling on TextView.
Kotlin
Java
ScrollView is needed when you want to show too long text and should fit into one screen.
Complete code of Android Scrollable TextView
Let’s build an app and demonstrates it, Here is the complete step by step tutorial:-
Step 1. Create an android project in the android studio (Follow this tutorial: Android First Program in Android Studio).
Step 2. Open the strings.xml file.
Step 3. Add your long text in the strings.xml file.
You can add your own text, this is only for testing purpose.
Step 4. Add the below code in activity_main.xml
Setting the height of TextView 300dp to see how it works.
Step 5. Add the below code in MainActivity.kt
For java, you can use it from the tutorial top section.
Step 4. Now Run the application, in an emulator or on your Android device.
Output screenshot Android Scrollable TextView:-
Download Link and Source of Scrollable TextView Android kotlin code in Github
Do comment if you have any doubts or suggestions on this tutorial.
Note: This example (Project) is developed in Android Studio 3.3.2. Tested on Android 9 ( Android-P), compile SDK version API 28: Android 9.0 (Pie)
MinSdkVersion=25″
TargetSdkVersion=28″Coding in Kotlin
Degree in Computer Science and Engineer: App Developer and has multiple Programming languages experience. Enthusiasm for technology & like learning technical.
Источник