CoordinatorLayout
-
做什么?
CoordinatorLayout布局是一个调度者,中心指挥者
,在它布局下的所有的直接子View可以通过Behavior
来和CoordinatorLayout中心指挥者通信。中心指挥者就可以根据Behavior来为子View指定依赖的同级View、嵌套滑动、事件拦截。 -
怎么做?
CoordinatorLayout
CoordinatorLayout比较常用在嵌套滑动或者吸顶效果
上,实现方式也比较简单。一般CoordinatorLayout会有三层结构,如下图所示。CoordinatorLayout作为一个滑动布局的最外层,里面包裹一个AppBarLayout
和一个可以滑动的NestedSV、RecyclerView、ViewPager
等。
-
AppBarLayout
: 这是一个已实现Behavior
的LinearLayout
,在AppBarLayout的Behavior已实现了嵌套滑动功能,所以在AppBarLayout包裹的子View也可以滑动,如果子View想要滑出屏幕外则必须要设置AppBarLayout为之提供的scrollFlags
。如果想要实现吸顶效果,则子View不设置scrollFlags即可。-
AppBarLayout的提供scrollFlags:
1.app:layout_scrollFlags="scroll|exitUntilCollapsed"
这种符合顶部逻辑,则最先滑出屏幕,最后滑进屏幕
exitUntilCollapsed.gif
-
AppBarLayout的提供scrollFlags:
2.app:layout_scrollFlags="scroll|enterAlways"
最先滑出屏幕,也最先滑进屏幕。
3.app:layout_scrollFlags="scroll|snap"
在你停止滑动时,如果View的显示大于75%,则自动显示全部,如果View的显示小于25%,则自动隐藏全部。
- 对于其他没有实现
Behavior
的可滑动子View,如果只是需要配合一起嵌套滑动,那么则可以设置Behavior为AppBarLayout的滑动Behavior:
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
image.png
网友评论