CoordinatorLayout的使用

一、前言

1.什么是嵌套滚动机制(NestedScrolling)?

所谓嵌套滚动其实就是界面布局中包含 一个可滚动的列表 和 一个不可滚动的View,这样在滚动列表时,首先将不可滚动View移出屏幕或移进屏幕,待不可滚动View固定时,才会继续滚动滚动列表的内容。

2.为什么要有滑动嵌套机制?

回想一下android系统事件分发机制,一个down事件到up事件为一个事件流,在这事件流之中一旦某个View拦截(处理)该Touch事件,那么后续这个事件流将统一交由它处理。

有时候我们需要将一个事件流分开成几个事件片给不同的View处理,那么我们需要调配事件分发。滑动嵌套机制应运而生。

二、Android嵌套滚动机制

1.重要的类

1
2
3
4
NestedScrollingChild接口
NestedScrollingParent接口
NestedScrollingChildHelper辅助类
NestedScrollingParentHelper辅助类

2.结构图

结构图

三、注意事项

1.子类宽高

由于CoordinatorLayout是FrameLayout的增强版(官方文档),所以子View使用match_parent这个属性就需要注意了。

如下图,View B使用了match_parent,然后CoordinatorLayout在layout的时候把它的位置下移了,并且超出CoordinatorLayout的区域了。使用clipChildren属性是无效的,clipChildren默认是true的。
layout

四、参考文章