Панель инструментов не свернется с Scrollview в качестве дочернего элемента CoordinatorLayout
Я пытаюсь следить за Google Docs при использовании CoordinatorLayout, но у меня возникла проблема с ScrollView внутри CoordinatorLayout. В принципе, панель инструментов обычно сворачивается с помощью RecyclerView или Listview при прокрутке вниз. Теперь с помощью ScrollView он не рухнет.
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<TextView
android:id="@+id/tv_View"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:text="@string/filler"
style="@style/TextAppearance.AppCompat.Large"
/>
</ScrollView>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
5 ответов:
The
ScrollView
не работает сCoordinatorLayout
. Вы должны использоватьNestedScrollView
вместоScrollView
используйте NestedScrollView, чтобы свернуть scrollview в качестве дочернего элемента макета координатора. Замените ваш код следующим кодом:
<android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tv_View" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:text="@string/filler" style="@style/TextAppearance.AppCompat.Large" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways" /> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout>
Вы можете сохранить
ScrollView
и добавьте это свойство XML:android:nestedScrollingEnabled="true"
поэтому он знает CoordinatorLayout как родной брат и имейте в виду, что это свойство поддерживается только в чупа-чупс версия и выше.
фактический ответ должен быть таким
CoordinatorLayout
не работает сScrollView
, потому чтоScrollView
не выполняет NestedScrollingChild.NestedScrollView
- этоScrollView
СNestedScrollingChild
реализация. Если вы хотите узнать больше о вложенной прокрутке я сделал блоге об этом.
использовать
NestedScrollView
вместо правильногоScrollView
при использованииCoordinatorLayout
.сделать
CollapsingToolbarLayout
свиток вы можете активировать свиток поведение установив минимальную высоту дочернего макетаNestedScrollView
на *1000dp.android:minHeight="1000dp"
планировка:
<android.support.v4.widget.NestedScrollView app:layout_behavior="@string/appbar_scrolling_view_behavior"> <!--to trigger scroll behavior--> <LinearLayout android:minHeight="1000dp"/> </android.support.v4.widget.NestedScrollView>
* пример SupportDesignDemos здесь: https://github.com/android/platform_development/blob/master/samples/SupportDesignDemos/res/layout/include_appbar_scrollview.xml