- ScrollView и HorizontalScrollView
- Методы scrollBy() и scrollTo()
- Пример использования ScrollView в Android
- Обзор Scrollview в Android
- Советы по использованию Scrollview
- Пример использования Scrollview в Android
- Могу ли я прокручивать ScrollView программно в Android?
- 16 ответов
- Создание прокрутки TextView на Android
- 24 ответов
- бонус:
- Android ScrollView (Horizontal, Vertical) with Examples
- Android ScrollView Example
- activity_main.xml
- Output of Android ScrollView Example
- Android HorizontalScrollView Example
- activity_main.xml
- Output of Android HorizontalScrollView Example
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 с использованием эффекта параллакса. Вы прокручиваете длинный текст, а задний фон прокручивается чуть медленнее. Возможно, кому-то пригодится. Там же можно скачать готовое демо и просмотреть в действии.
Источник
Пример использования ScrollView в Android
В этой статье мы рассмотрим пример использования ScrollView в простом Android приложении.
ScrollView — служит для упаковки иерархии объектов View в контейнер, который можно прокручивать (скролить).
Обзор Scrollview в Android
Контейнер Scrollview представляет собой особый тип FrameLayout. Его особенность состоит в том, что он позволяет пользователям просматривать контент, который занимает больше места, чем физически есть на дисплее. Иными словами — просматривать контент, который не вмещается на экране без прокрутки.
Scrollview может содержать только один дочерний элемент или контейнер ViewGroup .
Советы по использованию Scrollview
- Никогда не используйте view-компонент ListView или GridView вместе со ScrollView. ListView предназначен для отображения списка элементов и оптимизирован для работы с большим объемом данных. Кроме того, он содержит встроенные возможности для прокрутки содержимого.
- Контейнер Scrollview поддерживает только вертикальную прокрутку. Если Вы хотите добавить горизонтальную прокрутку, то нам понадобится другой наследник FrameLayout — контейнер HorizontalScrollView.
- В xml разметке контейнер ScrollView имеет полезное свойство android:fillViewport , которое определяет, должен ли Scrollview растягивать свое содержание, чтобы заполнить доступное место на экране. Также доступен метод для установки этого значения в коде: setFillViewport(boolean) .
Пример использования Scrollview в Android
Теперь создадим макет, в котором будет виджет ImageView с картинкой и два TextView: для заголовка и текста. Все это обернем в вертикальный LinearLayout и поместим в корневой ScrollView (помним, что Scrollview не может содержать больше одного дочернего элемента):
Источник
Могу ли я прокручивать ScrollView программно в Android?
есть ли способ прокрутить ScrollView программно на определенную позицию?
Я создал динамический TableLayout который находится в ScrollView . Поэтому я хочу, чтобы это было конкретное действие (например, нажатие кнопки и т. д.) конкретная строка должна автоматически прокручиваться в верхнюю позицию.
16 ответов
ответ от Pragna не всегда работает, попробуйте следующее:
я хотел, чтобы scrollView прокручивался непосредственно после onCreateView () (не после, например, нажатия кнопки). Чтобы заставить его работать, мне нужно было использовать ViewTreeObserver:
но будьте осторожны, что это будет называться каждый раз, когда что-то получает layouted (e.g Если вы установили вид невидимый или аналогичный), поэтому не забудьте удалить этот прослушиватель, если он вам больше не нужен:
public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim) на SDK Lvl
public void removeOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim) в SDK Lvl >= 16
использовать что-то вроде этого:
здесь много хороших ответов, но я хочу добавить только одну вещь. Иногда случается, что вы хотите прокрутить ScrollView до определенного вида макета, а не полный прокрутки вверх или вниз.
простой пример: в регистрационной форме, если пользователь нажимает кнопку «Регистрация», когда текст редактирования формы не заполнен, вы хотите прокрутить до этого конкретного текста редактирования, чтобы сообщить пользователю, что он должен заполнить это поле.
В этом случае, вы можете сделайте что-нибудь вроде этого:
или, если вы хотите гладкую прокрутку вместо мгновенной прокрутки:
очевидно, вы можете использовать любой тип представления вместо редактирования текста. Обратите внимание, что getBottom() возвращает координаты представления на основе его родительского макета, поэтому все виды, используемые внутри ScrollView, должны иметь только родительский (например, линейный макет).
Если у вас есть несколько родителей внутри ребенка ScrollView, единственное решение, которое я нашел вызвать requestChildFocus на родительский вид:
но в этом случае вы не можете иметь гладкий свиток.
Я надеюсь, что этот ответ может помочь кому-то с такой же проблемой.
Источник
Создание прокрутки 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
Источник
Android ScrollView (Horizontal, Vertical) with Examples
In android, ScrollView is a kind of layout that is useful to add vertical or horizontal scroll bars to the content which is larger than the actual size of layouts such as linearlayout, relativelayout, framelayout, etc.
Generally, the android ScrollView is useful when we have content that doesn’t fit our android app layout screen. The ScrollView will enable a scroll to the content which is exceeding the screen layout and allow users to see the complete content by scrolling.
The android ScrollView can hold only one direct child. In case, if we want to add multiple views within the scroll view, then we need to include them in another standard layout like linearlayout, relativelayout, framelayout, etc.
To enable scrolling for our android applications, ScrollView is the best option but we should not use ScrollView along with ListView or Gridview because they both will take care of their own vertical scrolling.
In android, ScrollView supports only vertical scrolling. In case, if we want to implement horizontal scrolling, then we need to use a HorizontalScrollView component.
The android ScrollView is having a property called android:fillViewport, which is used to define whether the ScrollView should stretch it’s content to fill the viewport or not.
Now we will see how to use ScrollView with linearlayout to enable scroll view to the content which is larger than screen layout in android application with examples.
Android ScrollView Example
Following is the example of enabling vertical scrolling to the content which is larger than the layout screen using an android ScrollView object.
Create a new android application using android studio and give names as ScrollViewExample. In case if you are not aware of creating an app in android studio check this article Android Hello World App.
Once we create an application, open activity_main.xml file from \res\layout folder path and write the code like as shown below.
activity_main.xml
If you observe above code, we used a ScrollView to enable the scrolling for linearlayout whenever the content exceeds layout screen.
Output of Android ScrollView Example
When we run the above example in android emulator we will get a result as shown below.
If you observe the above result, ScrollView provided a vertical scrolling for linearlayout whenever the content exceeds the layout screen.
As we discussed, ScrollView can provide only vertical scrolling for the layout. In case, if we want to enable horizontal scrolling, then we need to use HorizontalScrollView in our application.
We will see how to enable horizontal scrolling for the content which is exceeding the layout screen in the android application.
Android HorizontalScrollView Example
Now open activity_main.xml file in your android application and write the code like as shown below.
activity_main.xml
If you observe above code, we used a HorizontalScrollView to enable horizontal scrolling for linearlayout whenever the content exceeds layout screen.
Output of Android HorizontalScrollView Example
When we run the above example in the android emulator we will get a result like as shown below.
If you observe above result, HorizontalScrollView provided a horizontal scrolling for linearlayout whenever the content exceeds the layout screen.
This is how we can enable scrolling for the content which exceeds layout screen using ScrollView and HorizontalScrollView object based on our requirements.
Источник