¿Cuál es la diferencia entre ScrollView
y NestedScrollView
? Ambos se extienden FrameLayout
. Quiero saber en profundidad los pros y los contras de ambos.
android
xml
android-layout
android-scrollview
android-nestedscrollview
Chintan Soni
fuente
fuente
Respuestas:
NestedScrollView
como su nombre indica, se usa cuando es necesario una vista de desplazamiento dentro de otra vista de desplazamiento. Normalmente esto sería difícil de lograr ya que el sistema no podría decidir qué vista desplazarse.Aquí es donde
NestedScrollView
entra.fuente
Además del desplazamiento anidado, se
NestedScrollView
agregó una funcionalidad importante, que incluso podría hacerlo interesante fuera de los contextos anidados: tiene soporte de compilaciónOnScrollChangeListener
. AgregarOnScrollChangeListener
a laScrollView
API 23 original a continuación requería subclasificarScrollView
o jugar con elViewTreeObserver
de loScrollView
que a menudo significa aún más trabajo que la subclasificación. ConNestedScrollView
esto se puede hacer usando el setter incorporado .fuente
Además de las ventajas enumeradas en las respuestas dadas, una ventaja más de NestedScrollView sobre ScrollView es su compatibilidad con CoordinatorLayout. ScrollView no coopera con CoordinatorLayout. Debe usar NestedScrollView para obtener el comportamiento de "desplazamiento fuera de la pantalla" para la barra de herramientas.
La barra de herramientas no colapsará con Scrollview como elemento secundario de CoordinatorLayout
fuente
NestedScrollView
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
ScrollView
https://developer.android.com/reference/android/widget/ScrollView.html
fuente
NestedScrollView es como ScrollView, pero en NestedScrollView podemos poner otras vistas de desplazamiento como elementos secundarios, por ejemplo, RecyclerView.
Pero si colocamos RecyclerView dentro de NestedScrollView, se altera el desplazamiento suave de RecyclerView. Entonces, para recuperar el desplazamiento suave, hay un truco:
coloque la línea anterior después de configurar el adaptador para recyclerView.
fuente
Creo que un beneficio de usar la vista de desplazamiento anidado es que el diseño del cooridinador solo escucha los eventos de desplazamiento anidados. Entonces si por ej. desea que la barra de herramientas se desplace hacia abajo cuando desplace el contenido de la actividad, solo se desplazará hacia abajo cuando esté usando la vista de desplazamiento anidada en su diseño. Si utiliza una vista de desplazamiento normal en su diseño, la barra de herramientas no se desplazará cuando el usuario desplace el contenido.
fuente