工具栏不会以Scrollview作为CoordinatorLayout的子项折叠
我正在尝试关注使用CoordinatorLayout的Google文档,但是我在CoordinatorLayout中的ScrollView遇到问题。 基本上,当向下滚动时,工具栏通常会与一个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>
ScrollView
CoordinatorLayout
。 你必须使用NestedScrollView
而不是ScrollView
使用NestedScrollView作为协调器布局的子项折叠您的滚动视图。 用下面的代码replace你的代码:
<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
是一个带有NestedScrollingChild
实现的ScrollView
。 如果你想了解更多关于嵌套滚动,我做了一个关于它的博客文章 。
使用NestedScrollView
,请使用NestedScrollView
而不是常规的ScrollView
。
要使
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