Android горизонтальная прокрутка textview

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

У меня есть собственная галерея. Галерея представляет элементы, которые являются фреймовым макетом. Над ним есть один imageView и textView.

Если текст в textView слишком длинный, мне нужно, чтобы он прокручивался автоматически. Это одна строка текста, и ее нужно прокручивать по горизонтали.

Я нашел этот фрагмент кода:

Он работает в моем тестовом приложении только с одним текстовым представлением. Но в моей галерее это не работает. Заметив происходит, текст просто остается на месте.

9 ответов

Я все перепробовал и наконец придумал вот это. У меня это работает . надеюсь, что когда-нибудь это вам поможет. Ваше здоровье.

Добавьте этот код в свой

Возможно ваша проблема решена.

Этот код у меня работает правильно.

Scrollview = (ScrollView) findViewById (R.id.scrollview1); tb2.setTextSize (30);

Привет, у вас есть тег в самом XML-файле. А также используйте свойство Scrollview FOCUS_DOWN в файле java . Надеюсь, это поможет вам .

Однажды я столкнулся с этой проблемой и, наконец, решил проблему, вызвав .setFocus () в textView.

Попробуйте использовать ViewPager вместо галереи. Это доступно в пакетах поддержки Android. http://android-developers.blogspot.in /2011/08/horizontal-view-swiping-with-viewpager.html

Эффект выделения на TextView предназначен для работы только тогда, когда вид сфокусирован или выбран. Ваш XML-код постоянно пытается сделать TextView сфокусированным. К сожалению, поскольку в любой момент можно сфокусировать только одно представление, и поскольку у вас есть несколько представлений в галерее, этот подход не сработает для вас.

В противном случае самый простой способ добиться этого — сделать так, чтобы TextViews всегда был выбран. Несколько TextViews могут одновременно удерживать выбранное состояние. Выделение предназначено для использования для активного элемента AdapterView, но по-прежнему работает за его пределами. Во-первых, удалите из XML атрибуты, изменяющие фокус, а затем просто вызовите TextView.setSelected(true) через некоторое время после инициализации представления, например в Activity.onCreate(Bundle) (для этого нет атрибута XML). Если вы предоставляете представления из адаптера, вы можете вызвать TextView.setSelected(true) во время метода getView() после расширения представления.

Читайте также:  Warhammer 40k space wolf для андроид

Вот пример проекта, демонстрирующего работу выделения для нескольких TextView и поведение внутри галереи.

Попробуйте этот собственный класс TextView:

И установите следующие атрибуты XML:

Это прекрасно работает в моих словарных приложениях, где для отображения полного содержимого может потребоваться автоматическая прокрутка нескольких записей одновременно.

Источник

Создание прокрутки 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:

  1. вокруг TextView на ScrollView ; или
  2. установите метод перемещения в 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, который позволял мне выбирать текст и нажимать на ссылки.

Читайте также:  Android emulator etc hosts

добавьте следующее в 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 прокручиваемым на 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:

Вы также можете

  1. окружить TextView собой ScrollView ; или
  2. установите метод Movement в ScrollingMovementMethod.getInstance(); .

Лучший способ, который я нашел:

Замените TextView на EditText с этими дополнительными атрибутами:

Там нет необходимости для упаковки в ScrollView.

Просто. Вот как я это сделал:

Бонус:

Чтобы текстовое представление прокручивалось вниз по мере заполнения текста, вы должны добавить:

в текстовый XML-файл. Он будет прокручиваться автоматически по мере поступления текста.

Конечно, вам нужно добавить текст, используя функцию добавления вместо набора текста:

Я использовал это для целей журнала.

Надеюсь, это поможет 😉

Читайте также:  Saphir или android что лучше

Это «Как применить 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

Источник

Оцените статью