В чем разница между ScrollView
и NestedScrollView
? Оба они расширяются FrameLayout
. Я хочу подробно узнать плюсы и минусы их обоих.
В чем разница между ScrollView
и NestedScrollView
? Оба они расширяются FrameLayout
. Я хочу подробно узнать плюсы и минусы их обоих.
Ответы:
NestedScrollView
как следует из названия, используется, когда есть необходимость в представлении с прокруткой внутри другого представления с прокруткой. Обычно это будет трудно сделать, так как система не сможет решить, какой вид прокручивать.
Это где NestedScrollView
приходит.
В дополнение к вложенной прокрутке NestedScrollView
добавлена одна основная функциональность, которая может даже сделать ее интересной вне вложенных контекстов: она имеет встроенную поддержку OnScrollChangeListener
. Добавление OnScrollChangeListener
к оригинальному ScrollView
API 23, приведенному ниже, требовало создания подклассов ScrollView
или возни с ними,ViewTreeObserver
ScrollView
что часто означает даже больше работы, чем создание подклассов. С NestedScrollView
этим можно сделать используя встроенный сеттер .
Помимо преимуществ, перечисленных в приведенных ответах, еще одним преимуществом NestedScrollView над ScrollView является его совместимость с CoordinatorLayout. ScrollView не взаимодействует с CoordinatorLayout. Вы должны использовать NestedScrollView, чтобы получить «прокрутку вне экрана» для панели инструментов.
Панель инструментов не рухнет с Scrollview как дочерний элемент CoordinatorLayout
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
NestedScrollView похож на ScrollView, но в NestedScrollView мы можем поставить другие прокручиваемые представления как дочерние, например, RecyclerView.
Но если мы поместим RecyclerView в NestedScrollView, плавная прокрутка RecyclerView будет нарушена. Итак, чтобы вернуть плавную прокрутку, есть хитрость:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
поставьте строку выше после установки адаптера для recyclerView.
Я думаю, что одним из преимуществ использования представления «Вложенная прокрутка» является то, что раскладка cooridinator прослушивает только вложенные события прокрутки. Так что если для экс. Вы хотите, чтобы панель инструментов прокручивалась вниз при прокрутке содержимого активности, она будет прокручиваться только вниз, когда вы используете вложенный вид прокрутки в макете. Если вы используете обычный вид прокрутки в макете, панель инструментов не будет прокручиваться, когда пользователь прокручивает содержимое.