В чем разница между ScrollView
и NestedScrollView
? Оба они расширяют FrameLayout
. Я хочу подробно узнать плюсы и минусы их обоих.
Android: ScrollView против NestedScrollView
Ответ 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 для получения "прокрутки экрана" для панели инструментов.
Ответ 5
NestedScrollView похож на ScrollView, но в NestedScrollView мы можем поставить другие прокручиваемые представления как дочерние, например, RecyclerView.
Но если мы поместим RecyclerView в NestedScrollView, плавная прокрутка RecyclerView нарушится. Итак, чтобы вернуть плавную прокрутку, есть хитрость:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
поставьте строку выше после установки адаптера для recyclerView.
Ответ 6
Я думаю, что одним из преимуществ использования представления Nested Scroll является то, что раскладка кооридинатора слушает только вложенные события прокрутки. Так что если для экс. Вы хотите, чтобы панель инструментов прокручивалась вниз при прокрутке содержимого активности, она будет прокручиваться только вниз, когда вы используете вложенный вид прокрутки в макете. Если вы используете обычный вид прокрутки в макете, панель инструментов не будет прокручиваться, когда пользователь прокручивает содержимое.