Was ist der Unterschied zwischen ScrollViewund NestedScrollView? Beide erstrecken sich FrameLayout. Ich möchte die Vor- und Nachteile beider genau kennen.
Was ist der Unterschied zwischen ScrollViewund NestedScrollView? Beide erstrecken sich FrameLayout. Ich möchte die Vor- und Nachteile beider genau kennen.
Antworten:
NestedScrollViewWie 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 NestedScrollViewSpiel.
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 OnScrollChangeListenerzum Original ScrollView unter API 23 erforderte Unterklassen ScrollViewoder das Herumspielen mit dem ViewTreeObservervon,ScrollView was oft noch mehr Arbeit bedeutet als Unterklassen. Damit NestedScrollViewkann 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.