Was ist der Unterschied zwischen ScrollView
und NestedScrollView
? Beide erstrecken sich FrameLayout
. Ich möchte die Vor- und Nachteile beider genau kennen.
Was ist der Unterschied zwischen ScrollView
und NestedScrollView
? Beide erstrecken sich FrameLayout
. Ich möchte die Vor- und Nachteile beider genau kennen.
Antworten:
NestedScrollView
Wie der Name schon sagt, wird es verwendet, wenn eine Bildlaufansicht in einer anderen Bildlaufansicht erforderlich ist. Normalerweise ist dies schwierig zu erreichen, da das System nicht entscheiden kann, welche Ansicht gescrollt werden soll.
Hier kommt ins NestedScrollView
Spiel.
Zusätzlich zum verschachtelten Scrollen wurde NestedScrollView
eine wichtige Funktion hinzugefügt, die es auch außerhalb verschachtelter Kontexte interessant machen könnte: Es hat Unterstützung für eingebaut OnScrollChangeListener
. Das Hinzufügen von a OnScrollChangeListener
zum Original ScrollView
unter API 23 erforderte Unterklassen ScrollView
oder das Herumspielen mit dem ViewTreeObserver
von,ScrollView
was oft noch mehr Arbeit bedeutet als Unterklassen. Damit NestedScrollView
kann mit dem eingebauten Setter gearbeitet werden .
Abgesehen von den in den Antworten aufgeführten Vorteilen ist ein weiterer Vorteil von NestedScrollView gegenüber ScrollView die Kompatibilität mit CoordinatorLayout. Die ScrollView kooperiert nicht mit dem CoordinatorLayout. Sie müssen NestedScrollView verwenden, um das Verhalten "Außerhalb des Bildschirms scrollen" für die Symbolleiste zu erhalten.
NestedScrollView
NestedScrollView ist genau wie ScrollView, unterstützt jedoch die Funktion als verschachteltes scrollendes Elternteil und Kind sowohl in neuen als auch in alten Versionen von Android. Das verschachtelte Scrollen ist standardmäßig aktiviert.
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
ScrollView
Layoutcontainer für eine Ansichtshierarchie, die vom Benutzer gescrollt werden kann, sodass sie größer als die physische Anzeige ist. Eine ScrollView ist ein FrameLayout. Dies bedeutet, dass Sie ein untergeordnetes Element darin platzieren sollten, das den gesamten zu scrollenden Inhalt enthält. Dieses untergeordnete Element kann selbst ein Layout-Manager mit einer komplexen Hierarchie von Objekten sein
https://developer.android.com/reference/android/widget/ScrollView.html
NestedScrollView ist genau wie ScrollView, aber in NestedScrollView können wir andere Bildlaufansichten als untergeordnetes Element einfügen, z. B. RecyclerView.
Wenn wir jedoch RecyclerView in NestedScrollView einfügen, wird das reibungslose Scrollen von RecyclerView gestört. Um das reibungslose Scrollen wiederherzustellen, gibt es einen Trick:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
Setzen Sie die obige Zeile, nachdem Sie den Adapter für recyclerView eingestellt haben.
Ich denke, ein Vorteil der Verwendung der verschachtelten Bildlaufansicht besteht darin, dass das Cooridinator-Layout nur auf verschachtelte Bildlaufereignisse wartet. Also wenn zum Beispiel. Wenn Sie möchten, dass die Symbolleiste beim Scrollen des Aktivitätsinhalts nach unten gescrollt wird, wird sie nur nach unten gescrollt, wenn Sie in Ihrem Layout eine verschachtelte Bildlaufansicht verwenden. Wenn Sie in Ihrem Layout eine normale Bildlaufansicht verwenden, wird die Symbolleiste nicht gescrollt, wenn der Benutzer den Inhalt scrollt.