AppBarLayout:
是继承LinerLayout实现的一个ViewGroup容器组件,它是为了Material Design设计的App Bar,支持手势滑动操作。
默认的AppBarLayout是垂直方向的,它的作用是把AppBarLayout包裹的内容都作为AppBar。
属性:
app:layout_scrollFlags="scroll|enterAlways"
scroll:所有想滚动出屏幕的view都需要设置这个flag,没有设置这个flag的view将被固定在屏幕顶部。例如,TabLayout没有设置这个值,将会停留在屏幕顶部。
enterAlways: 一旦向上滚动这个view就可见。
enterAlwaysCollapsed: 顾名思义,这个flag定义的是何时进入(已经消失之后何时再次显示)。假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,当滚动到顶部的时候展开完。
exitUntilCollapsed: 同样顾名思义,这个flag时定义何时退出,当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。
scroll - 想滚动就必须设置这个。
enterAlways - 实现quick return效果, 当向下移动时,立即显示View(比如Toolbar)。
exitUntilCollapsed - 向上滚动时收缩View,但可以固定Toolbar一直在上面。
enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度
属性:
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属性
译者注:另外,ScrollingViewBehavior除了能处理滚动行为,还能使设置了app:layout_behavior="@string/appbar_scrolling_view_behavior"的view显示在AppBarLayout的下面。而不是叠加在AppBarLayout上。