it-swarm.com.de

android: ScrollView vs NestedScrollView

Was ist eigentlich der Unterschied zwischen ScrollView und NestedScrollView? Ich habe beide benutzt. Beide erweitern FrameLayout. Ich möchte die Vor- und Nachteile beider kennen. Wenn jemand kann bitte helfen Sie mir. Vielen Dank.

90
Chintan Soni

NestedScrollView wird, wie der Name vermuten lässt, verwendet, wenn eine Bildlaufansicht in einer anderen Bildlaufansicht erforderlich ist. Normalerweise ist dies schwierig zu bewerkstelligen, da das System nicht entscheiden kann, welche Ansicht gescrollt werden soll.

Hier kommt NestedScrollView ins Spiel.

128
Roshan

NestedScrollView

NestedScrollView ist genauso wie ScrollView, unterstützt jedoch die Funktion als Sowohl ein verschachteltes Bildlaufelement als auch ein untergeordnetes Element in der neuen und der alten Version von Android. Verschachtelter Bildlauf ist standardmäßig aktiviert.

https://developer.Android.com/reference/Android/support/v4/widget/NestedScrollView.html

ScrollView

Layout-Container für eine Ansichtshierarchie, die von der .__-Datei gescrollt werden kann. Benutzer, so dass es größer als die physische Anzeige ist. EIN ScrollView ist ein FrameLayout, dh, Sie sollten ein untergeordnetes Element einfügen den gesamten Inhalt zum Blättern enthalten; Dieses Kind kann selbst ein .__ sein. Layout-Manager mit einer komplexen Objekthierarchie

https://developer.Android.com/reference/Android/widget/ScrollView.html

18
Amit Vaghela

Zusätzlich zum verschachtelten BildlaufNestedScrollView wurde eine Hauptfunktion hinzugefügt, die es sogar außerhalb verschachtelter Kontexte interessant machen könnte: Es hat Unterstützung für OnScrollChangeListener eingebaut. Hinzufügen einer OnScrollChangeListener zur ursprünglichen ScrollViewunterhalb der API 23 erforderliche Unterklassifizierung ScrollView oder Durcheinander mit der ViewTreeObserver der ScrollView , was oft sogar mehr Arbeit als Subklassifizierung bedeutet. Mit NestedScrollView kann dies mit dem eingebauten Setter durchgeführt werden.

16
Fabian Ochmann

Abgesehen von den in den Antworten aufgeführten Vorteilen ist ein weiterer Vorteil von NestedScrollView gegenüber ScrollView die Kompatibilität mit CoordinatorLayout. Das ScrollView arbeitet nicht mit dem CoordinatorLayout zusammen. Sie müssen NestedScrollView verwenden, um für die Symbolleiste das Verhalten "Bildlauf außerhalb des Bildschirms" zu erhalten.

Symbolleiste wird nicht mit Scrollview als untergeordnetes Element von CoordinatorLayout ausgeblendet

12
Suraj

NestedScrollView ist genau wie ScrollView, aber in NestedScrollView können wir andere Bildlaufansichten als untergeordnetes Element einfügen, z. RecyclerView.

Wenn wir RecyclerView jedoch in NestedScrollView einfügen, wird das reibungslose Scrollen von RecyclerView gestört. Um einen reibungslosen Bildlauf wieder herzustellen, gibt es folgenden Trick:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

setzen Sie die obere Zeile, nachdem Sie den Adapter für recyclerView eingestellt haben.

3
Umar Farooq

NestedScrollView ist ein Widget, das verwendet wird, wenn eine scrollbare Ansicht in einer anderen scrollbaren Ansicht implementiert werden soll.

Klicken Sie auf den Link, um die Layout-Ausgabe anzuzeigen: NestedScrollView-Beispiel

 <?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:Android="<a class="vglnk" href="http://schemas.Android.com/apk/res/Android" rel="nofollow"><span>http</span><span>://</span><span>schemas</span><span>.</span><span>Android</span><span>.</span><span>com</span><span>/</span><span>apk</span><span>/</span><span>res</span><span>/</span><span>Android</span></a>"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">


<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginBottom="20dp"
    Android:gravity="center"
    Android:orientation="vertical">

    <Android.support.v4.widget.NestedScrollView
        Android:layout_width="match_parent"
        Android:layout_height="100dp"
        Android:layout_margin="20dp"
        Android:background="@Android:color/white"
        Android:padding="10dp">

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="vertical">

            <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="@string/nested_scroll_text"/>

        </LinearLayout>

    </Android.support.v4.widget.NestedScrollView>

    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="20dp"
        Android:contentDescription="@string/no_image"
        Android:src="@drawable/guava"/>

    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="20dp"
        Android:contentDescription="@string/no_image"
        Android:src="@drawable/jackfruit"/>

    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="20dp"
        Android:contentDescription="@string/no_image"
        Android:src="@drawable/mix_fruit"/>

    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="20dp"
        Android:contentDescription="@string/no_image"
        Android:src="@drawable/pomegranate"/>

    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="20dp"
        Android:contentDescription="@string/no_image"
        Android:src="@drawable/strawberry"/>

    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="20dp"
        Android:contentDescription="@string/no_image"
        Android:src="@drawable/zespri_kiwi"/>

</LinearLayout>

0
Aamir Kalimi

Ich denke, ein Vorteil der Ansicht "Verschachtelter Bildlauf" ist, dass das Cooridinator-Layout nur auf verschachtelte Bildlaufereignisse wartet. Also, wenn zum Beispiel. Wenn Sie möchten, dass die Symbolleiste nach unten rollt, wenn Sie den Inhalt der Aktivität scrollen, wird nur ein Bildlauf nach unten ausgeführt, wenn Sie die verschachtelte Bildlaufansicht in Ihrem Layout verwenden. Wenn Sie in Ihrem Layout eine normale Bildlaufansicht verwenden, wird in der Symbolleiste kein Bildlauf ausgeführt, wenn der Benutzer einen Bildlauf durch den Inhalt durchführt.

0