<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/cl_main" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.design.widget.AppBarLayout android:id="@+id/abl_title" android:layout_width="match_parent" android:layout_height="160dp" android:background="@color/blue_light" > <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/ctl_title" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:contentScrim="?attr/colorPRimary" app:expandedTitleMarginStart="40dp" > <android.support.v7.widget.Toolbar android:id="@+id/tl_title" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/red" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.1" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv_main" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /></android.support.design.widget.CoordinatorLayout>当然,CollapsingToolbarLayout的折叠效果并不仅限于和Toolbar的互动,还包括标题文字的样式渐变(文字大小、颜色、间距等等),连背景图片都可以实现折叠的渐变效果。下面是标题栏在折叠时显示渐变图片的效果图:要实现图片的折叠渐变,其实很简单,只需在Toolbar节点前面加个ImageView节点的声明即可,下面是演示折叠模式使用的布局文件例子:<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/cl_main" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.design.widget.AppBarLayout android:id="@+id/abl_title" android:layout_width="match_parent" android:layout_height="160dp" android:background="@color/blue_light" > <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/ctl_title" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:contentScrim="#aaffaa" app:expandedTitleMarginStart="100dp" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.1" android:scaleType="centerCrop" android:src="@drawable/top_pic" /> <android.support.v7.widget.Toolbar android:id="@+id/tl_title" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:layout_scrollFlags="scroll|enterAlways" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv_main" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /></android.support.design.widget.CoordinatorLayout>与CollapsingToolbarLayout有关的滚动标志
上一篇博文《Android开发笔记(一百三十五)应用栏布局AppBarLayout》说过,AppBarLayout的子控件共有五个滚动标志,同时提到后面三个标志与CollapsingToolbarLayout有关。现在就针对CollapsingToolbarLayout,重新演示看看五种标志分别对应的效果图。1、scroll : 头部与主体一起滚动。如果仅仅声明scroll,没有声明其它标志,则滚动效果如下图所示:2、enterAlways : 头部与主体先一起滚动,头部滚到位后,主体继续向上或者向下滚。同时声明scroll和enterAlways,滚动效果如下图所示:3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。具体的滚动说明如下所示:向上滚动:头部先往上收缩,一直滚到折叠的最小高度。然后头部固定不动,主体继续向上滚动。向下滚动:头部固定不动,主体先向下滚动,一直滚到主体全部拉出。然后头部向下展开。同时声明scroll和exitUntilCollapsed,滚动效果如下图所示:4、enterAlwaysCollapsed:该标志一般跟enterAlways一起使用,它与enterAlways区别在于有折叠操作,而单独的enterAlways没有折叠。具体的滚动说明如下所示:向上滚动:头部先往上收缩,一直滚到折叠的最小高度。然后头部与主体先一起滚动,头部滚到位后,主体继续向上。向下滚动:头部与主体先一起滚动,一直滚到头部折叠的最小高度。然后主体向下滚动,滚到位后头部继续向下展开。同时声明scroll、enterAlways和enterAlwaysCollapsed,滚动效果如下图所示:5、snap : 在用户手指松开时,系统自行判断,接下来是全部向上滚到顶,还是全部向下展开。同时声明scroll和snap,滚动效果如下图所示:下面是演示五种标志用到的布局文件例子:<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/cl_main" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.design.widget.AppBarLayout android:id="@+id/abl_title" android:layout_width="match_parent" android:layout_height="160dp" android:background="@color/blue_light" > <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/ctl_title" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="40dp" > <android.support.v7.widget.Toolbar android:id="@+id/tl_title" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" > <Spinner android:id="@+id/sp_flag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:spinnerMode="dialog" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv_main" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /></android.support.design.widget.CoordinatorLayout>点击下载本文用到的可折叠工具栏布局的工程代码点此查看Android开发笔记的完整目录
新闻热点
疑难解答