<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開發筆記的完整目錄
新聞熱點
疑難解答