Android Develop——AppBarLayout

AppBarLayout簡介

  • AppBarLayout是繼承LinearLayout實現的一個ViewGroup容器組件,布局方向為垂直方向。AppBarLayout是在LinearLayout上加了一些材料設計概念,它可以讓你定制當某個可滾動View的滾動手勢發生變化時,其內部的子View實現何種操作
  • 簡單來說就是當某個ScrollView發生滾動時,可以定制頂部欄應該執行哪些動作

AppBarLayout子View的動作

  • 內部的子view通過在布局中加app:layout_scrollFlags 設置執行動作
    • scroll:設置為scroll的view會隨著滾動事件一起發生移動
<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="?android:attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll" />
</android.support.design.widget.AppBarLayout>

![Uploading 2154124-3be36f546d6f5bbd_167511.gif . . .]

  • enterAlways
    子View添加layout_scrollFlags屬性的值是enterAlways時,當ScrollView向下滑動時,子View將直接向下移動,而不管ScrollView是否在滑動。注意:要與Scroll搭配使用
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|enterAlways"
                   />
  • enterAlwaysCollapsed
    enterAlwaysCollapsed 是對enterAlways 的補充,當ScrollView 向下滑動的時候,滑動View(也就是設置了enterAlwaysCollapsed 的View)下滑至折疊的高度,當ScrollView 到達滑動范圍的結束值的時候,滑動View剩下的部分開始滑動。這個折疊的高度是通過View的minimum height (最小高度)指定的。
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="200dp"
                   android:minHeight="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   android:gravity="bottom"
                   android:layout_marginBottom="25dp"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
                   />
  • exitUntilCollapsed
    當ScrollView 滑出屏幕時(也就時向上滑動時),滑動View先響應滑動事件,滑動至折疊高度,也就是通過minimum height 設置的最小高度后,就固定不動了,再把滑動事件交給 scrollview 繼續滑動。
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="200dp"
                   android:minHeight="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   android:gravity="bottom"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|exitUntilCollapsed"
                   />
  • snap
    意思是:在滾動結束后,如果view只是部分可見,它將滑動到最近的邊界。比如,如果view的底部只有25%可見,它將滾動離開屏幕,而如果底部有75%可見,它將滾動到完全顯示。
    ** 解釋:可能這段話有點難懂,解釋一下,就是說,比如在屏幕的頂部有個View ,高度200dp,我向上滑動40%后停止,也就 40% 滑出了屏幕,剩下的60%留在屏幕,那么這個屬性就會自動將屏幕外的40% 滑回屏幕,結果的整個View都留在屏幕上,相反,如果我向上將60%的部分滑出屏幕,然后停止滑動,那么這個屬性會將剩下的40% 也自動滑出屏幕,結果是整個View都在屏幕之外。這就是上面所說的滑動到最近的邊界。**
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="200dp"
                   android:minHeight="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   android:gravity="bottom"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|snap"
                   />

AppbarLayout 的幾個重要方法

介紹一下AppbarLayout幾個常用且重要的方法

  • addOnOffsetChangedListener 當AppbarLayout 的偏移發生改變的時候回調,也就是子View滑動。

  • getTotalScrollRange 返回AppbarLayout 所有子View的滑動范圍

  • removeOnOffsetChangedListener 移除監聽器

  • setExpanded (boolean expanded, boolean animate)設置AppbarLayout 是展開狀態還是折疊狀態,animate 參數控制切換到新的狀態時是否需要動畫

  • setExpanded (boolean expanded) 設置AppbarLayout 是展開狀態還是折疊狀態,默認有動畫

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容