В чем разница между ScrollViewи NestedScrollView? Оба они расширяются FrameLayout. Я хочу подробно узнать плюсы и минусы их обоих.
В чем разница между ScrollViewи NestedScrollView? Оба они расширяются FrameLayout. Я хочу подробно узнать плюсы и минусы их обоих.
Ответы:
NestedScrollViewкак следует из названия, используется, когда есть необходимость в представлении с прокруткой внутри другого представления с прокруткой. Обычно это будет трудно сделать, так как система не сможет решить, какой вид прокручивать.
Это где NestedScrollViewприходит.
В дополнение к вложенной прокрутке NestedScrollView добавлена одна основная функциональность, которая может даже сделать ее интересной вне вложенных контекстов: она имеет встроенную поддержку OnScrollChangeListener. Добавление OnScrollChangeListenerк оригинальному ScrollView API 23, приведенному ниже, требовало создания подклассов ScrollViewили возни с ними,ViewTreeObserverScrollView что часто означает даже больше работы, чем создание подклассов. С 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 прослушивает только вложенные события прокрутки. Так что если для экс. Вы хотите, чтобы панель инструментов прокручивалась вниз при прокрутке содержимого активности, она будет прокручиваться только вниз, когда вы используете вложенный вид прокрутки в макете. Если вы используете обычный вид прокрутки в макете, панель инструментов не будет прокручиваться, когда пользователь прокручивает содержимое.