CollapsingToolbarLayout配合CoordinatorLayout、AppBarLayout,RecyclerView實現伸縮佈局

這四個layout都是Android design中出現的控件,所以要想使用首先要在gradle中配置依賴,其中RecyclerView使用的第三方的庫,配置如下:

compile 'com.jcodecraeer:xrecyclerview:1.3.2'
compile 'com.android.support:cardview-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
demo中用到了cardview所以也有cardview-v7的包,要想實現這一功能主要的還是佈局,佈局寫好後其他的就該怎麼寫就怎麼寫了;

佈局如下:

<?xml version="1.0" encoding="utf-8"?>
<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.xlistviewdemo.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <com.xlistviewdemo.view.NoScrollGridView
                android:id="@+id/scroll_gridview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true"
                android:background="@color/white"
                android:numColumns="5"
                android:layout_margin="10dp"
                android:verticalSpacing="10dp"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xrecyclerview_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
最外層的CoordinatorLayout繼承於ViewGroup,類似於 FrameLayout,功能主要是作爲頂層佈局調度協調子佈局,通過設置子佈局的  Behavior來協調子佈局

AppBarLayout控制子視圖,可以看到CollapsingToobarLayout裏面有app:layout_scrollFlags這一屬性,這一屬性是用來控制滑動試圖效果的,其有四個字:

  1. scroll: 所有想滾動出屏幕的view都需要設置這個flag, 沒有設置這個flag的view將被固定在屏幕頂部。例如,XRecyclerView沒有設置這個值,將會停留在屏幕頂部。
  2. enterAlways: 設置這個flag時,向下的滾動都會導致該view變爲可見,啓用快速“返回模式”。
  3. enterAlwaysCollapsed: 當你的視圖已經設置minHeight屬性又使用此標誌時,你的視圖只能已最小高度進入,只有當滾動視圖到達頂部時才擴大到完整高度。
  4. exitUntilCollapsed: 滾動退出屏幕,最後摺疊在頂端。
想要collapsingToolbar有滑動效果,以下是要設置的:
1. CoordinatorLayout作爲佈局的父佈局容器。
2. 給需要滑動的組件設置 app:layout_scrollFlags=”scroll|enterAlways” 屬性。
3. 給滑動的組件設置app:layout_behavior屬性

CollapsingToolbarLayout實現Toolbar的摺疊效果。CollapsingToolbarLayout的子視圖類似與LinearLayout垂直方向排放。其屬性有很多,我就不一一介紹了,想了解的可以看下官方文檔:https://developer.android.google.cn/reference/android/support/design/widget/CollapsingToolbarLayout.html

這個demo實現的是隨着XRecyclerView上滑,GridView摺疊,所以給XRecyclerView設置了layout_behavior,想要實現摺疊效果,就要使用Coordinatorlayout作爲父佈局,想要獲取更好的效果,可以自定義Behavior實現。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章