AppBarLayout:
是繼承LinerLayout實現的一個ViewGroup容器組件,它是為了Material Design設計的App Bar,支持手勢滑動操作。
默認的AppBarLayout是垂直方向的,它的作用是把AppBarLayout包裹的內容都作為AppBar。
屬性:
app:layout_scrollFlags="scroll|enterAlways"
scroll:所有想滾動出屏幕的view都需要設置這個flag,沒有設置這個flag的view將被固定在屏幕頂部。例如,TabLayout沒有設置這個值,將會停留在屏幕頂部。
enterAlways:設置這個flag時,向下的滾動都會導致該view變為可見,啟用快速“返回模式”。
enterAlwaysCollapsed:當你的視圖已經設置minHeight屬性又使用此標志時,你的視圖只能已最小高度進入,只有當滾動視圖到達頂部時才擴大到完整高度。
exitUntilCollapsed:滾動退出屏幕,最后折疊在頂端。
屬性:
app:layout_behavior="@string/appbar_scrolling_view_behavior"
為了ToolBar可以滾動,CoordinatorLayout里面,放一個帶有可滾動的View.比如放的是ViewPager,ListView,RecycleView可以在ViewPager里面是放了RecylerView的,即是可以滾動的View。
CoordinatorLayout包含的子視圖中帶有滾動屬性的View需要設置app:layout_behavior屬性。
注意:
為了使得Toolbar有滑動效果,必須做到如下三點
1. CoordinatorLayout作為布局的父布局容器。
2.給需要滑動的組件設置app:layout_scrollFlags=”scroll|enterAlways”屬性。
3.給滑動的組件設置app:layout_behavior屬性
CollapsingToolbarLayout:
可實現Toolbar的折疊效果。CollapsingToolbarLayout的子視圖類似與LinearLayout垂直方向排放。
app:contentScrim="?attr/colorPrimary"
ToolBar被折疊到頂部固定時候的背景,我們可以通過代碼調用setContentScrim(Drawable)方法改變背景或者在屬性中使用app:contentScrim=”?attr/colorPrimary”來改變背景。
app:title="title"
ToolBar的標題,當CollapsingToolbarLayout全屏沒有折疊時,title顯示的是大字體,在折疊的過程中,title不斷變小到一定大小的效果。我們可以通過代碼調用setTitle(CharSequence)方法設置title。
app:layout_collapseParallaxMultiplier="1.0"
CollapsingToolbarLayout滑動時,子視圖的視覺差,可以通過屬性app:layout_collapseParallaxMultiplier=”0.6”改變。值de的范圍[0.0,1.0],值越大視察越大。
子視圖:
app:layout_collapseMode="parallax | pin”
子視圖的折疊模式,在子視圖設置,有兩種
“pin”:固定模式,在折疊的時候最后固定在頂端;
“parallax”:視差模式,在折疊的時候會有個視差折疊的效果。我們可以在布局中使用屬性app:layout_collapseMode=”parallax”來改變。
其他視圖
app:layout_anchor="@id/appbar"
提供了一個layout_anchor的屬性,連同layout_anchorGravity一起,可以用來放置與其他視圖關聯在一起的懸浮視圖(如FloatingActionButton)。
與某一個AppBarLayout控件相關聯
app:layout_anchorGravity="bottom | right | end"
懸浮視圖的位置
注意:
使用CollapsingToolbarLayout實現折疊效果,需要注意3點
1. AppBarLayout的高度固定
2. CollapsingToolbarLayout的子視圖設置layout_collapseMode屬性
3.關聯懸浮視圖設置app:layout_anchor,app:layout_anchorGravity屬性