Подтвердить что ты не робот

Android: ScrollView против NestedScrollView

В чем разница между ScrollView и NestedScrollView? Оба они расширяют FrameLayout. Я хочу подробно узнать плюсы и минусы их обоих.

4b9b3361

Ответ 1

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

Это где NestedScrollView приходит.

Ответ 2

В дополнение к вложенная прокрутка NestedScrollView добавлена ​​одна из основных функций, которая может даже сделать ее интересной вне вложенных контекстов: она построена в поддержку OnScrollChangeListener. Добавив OnScrollChangeListener в исходный ScrollView ниже API 23 необходимый подклассом ScrollView или с помощью ViewTreeObserver ScrollView, что часто означает еще большую работу, чем подкласс. С помощью NestedScrollView это можно сделать с помощью встроенного setter.

Ответ 3

NestedScrollView

NestedScrollView похож на ScrollView, но поддерживает как вложенные прокручивающие родительские и дочерние элементы как в новой, так и в старой версиях Android. Вложенная прокрутка включена по умолчанию.

https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html

ScrollView

Контейнер компоновки для иерархии представлений, которая может быть прокручена пользователь, позволяя ему быть больше физического дисплея. ScrollView - это FrameLayout, то есть вы должны поместить в него одного ребенка содержащее все содержимое для прокрутки; этот ребенок сам может быть менеджер компоновки со сложной иерархией объектов

https://developer.android.com/reference/android/widget/ScrollView.html

Ответ 4

Помимо преимуществ, перечисленных в приведенных ответах, еще одним преимуществом NestedScrollView над ScrollView является его совместимость с CoordinatorLayout. ScrollView не взаимодействует с CoordinatorLayout. Вы должны использовать NestedScrollView для получения "прокрутки экрана" для панели инструментов.

Панель инструментов не будет сбрасываться с помощью Scrollview в качестве дочернего элемента CoordinatorLayout

Ответ 5

NestedScrollView похож на ScrollView, но в NestedScrollView мы можем поставить другие прокручиваемые представления как дочерние, например, RecyclerView.

Но если мы поместим RecyclerView в NestedScrollView, плавная прокрутка RecyclerView нарушится. Итак, чтобы вернуть плавную прокрутку, есть хитрость:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

поставьте строку выше после установки адаптера для recyclerView.

Ответ 6

Я думаю, что одним из преимуществ использования представления Nested Scroll является то, что раскладка кооридинатора слушает только вложенные события прокрутки. Так что если для экс. Вы хотите, чтобы панель инструментов прокручивалась вниз при прокрутке содержимого активности, она будет прокручиваться только вниз, когда вы используете вложенный вид прокрутки в макете. Если вы используете обычный вид прокрутки в макете, панель инструментов не будет прокручиваться, когда пользователь прокручивает содержимое.