<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.m.coordinatorlayouttest.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:title="toolBar" app:titleTextColor="#fff" app:layout_scrollFlags="scroll"/> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:id="@+id/recycler"/> </android.support.design.widget.CoordinatorLayout>
首先你需要导入design库
File->Project Structure->app->Dependencies,然后点击右边的'+'号 ->Library Dependency,输入design
接下来分析xml代码
最外层是CoordinatorLayout,里面可以有同级两个子控件:
1.AppBarLayout,默认orientation是vertical,Toolbar就放在这里面
2.RecyclerView或NestedScrollView,记住一定要加
如果不加的话app:layout_behavior="@string/appbar_scrolling_view_behavior"
可以看到,RecyclerView与AppBarLayout的滑动就不同步了
需要注意的是下面的代码
app:layout_scrollFlags="scroll"
这个属性有五个值
scroll 表示可以滑动
下面这四个值需要搭配scroll使用,例如
app:layout_scrollFlags="scroll|enterAlways"
enterAlways
向下拉,toolBar会折叠;向上拉,toolBar就会出现;
enterAlwaysCollapsed
向下拉,toolBar会折叠;向上拉,到达顶部,toolBar才会出现(单独的scroll也可以达到这种效果)
exitUntilCollapsed
向下拉,到达Toolbar的最小高度,就不能再折叠;向上拉,到达顶部,toolBar才会出现
snap
基本与enterAlwaysCollapsed一直,不过如果toolBar被拉出部分,则根据就近原则完全折叠或隐藏
scroll 与 scroll|enterAlwaysCollapsed
scroll|enterAlways
scroll|snap
可以看到,如果toolBar显示一部分,要么折叠要么完全显示
scroll|exitUntilCollapsed
首先需要将Toolbar的高度修改
android:layout_height="200dp"
可以看到,当Toolbar达到最小高度,也就是
的时候,就无法继续折叠了android:layout_height="?attr/actionBarSize"