it-swarm.com.ru

android: ScrollView против NestedScrollView

В чем разница между ScrollView и NestedScrollView на самом деле? Я использовал их обоих. Оба они расширяют FrameLayout. Я хочу подробно узнать плюсы и минусы их обоих. Если кто-нибудь может, пожалуйста, помогите мне. Благодарю.

90
Chintan Soni

NestedScrollView, как следует из названия, используется, когда есть необходимость в представлении с прокруткой внутри другого представления с прокруткой. Обычно это будет трудно осуществить, поскольку система не сможет решить, какой вид прокручивать.

Это где NestedScrollView приходит.

128
Roshan

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

18
Amit Vaghela

В дополнение к вложенной прокруткеNestedScrollView добавила одну важную функциональность, которая могла бы даже сделать ее интересной вне вложенных контекстов: она имеет встроенную поддержку OnScrollChangeListener. Добавление OnScrollChangeListener к исходному ScrollViewниже API 23 требовало подкласса ScrollView или возиться с ViewTreeObserverScrollView , что часто означает даже больше работы, чем подкласс. С NestedScrollView это можно сделать с помощью встроенного сеттера .

16
Fabian Ochmann

Помимо преимуществ, перечисленных в приведенных ответах, еще одним преимуществом NestedScrollView над ScrollView является его совместимость с CoordinatorLayout. ScrollView не взаимодействует с CoordinatorLayout. Вы должны использовать NestedScrollView, чтобы получить «прокрутку вне экрана» для панели инструментов.

Панель инструментов не свернется с Scrollview как дочерний элемент CoordinatorLayout

12
Suraj

NestedScrollView - это виджет, который используется, когда мы хотим реализовать прокручиваемое представление внутри другого прокручиваемого представления.

Нажмите на ссылку, чтобы увидеть вывод макета: Пример NestedScrollView

 <?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