1 scroll
1.1 注意点
-
这个标志位是其他四个标志位生效的前提,也就是说,其他四个标志位使用时,必须是 scroll|其他flag
-
带此标志位的View必须放到AppBarLayout的第一个位置,若不是第一个位置,滑动时是不会产生标志位相应的作用的
1.2 使用效果
- 设置了scroll的View在滚动后收起或打开
- 当手指向上滑动时,会优先收起AppBarLayout中flag为scroll的View,然后在滑动列表内容(如RecyclerVIew)
- 当手指向下滑动是,会先滑动列表内容(如RecyclerView),当列表内容内容滑动到顶部时,然后再展开AppBarLayout中flag为scroll的View
2 exitUntilCollapsed
对于可收起的子View来说有两种状态:Enter和Collapsed。手指向上移动的时候,会优先收起AppBarLayout中的子View,而收起的最小高度为0,假如希望它在收起时仍然保留部分可见,那么就需要使用exitUntilCollapsed + minHeight属性,minHeight就决定了收起时的最小高度是多少,也就是Collapsed状态。
-
当手指向上滑动时,会优先收起AppBarLayout中flag为scroll的View,收起到还保留minHeight可见的位置停下,然后在滑动列表内容(如RecyclerVIew)
-
当手指像下滑动时,会先滑动列表内容(如RecyclerView),当列表内容内容滑动到顶部时,然后再展开AppBarLayout中flag为scroll | exitUntilCollapsed 的View
也就是说,exitUntilCollapsed的效果与scroll类似,若不设置minHeight,或minHeight为0,效果和scroll完全一样。若设置了minHeight,View中始终有minHeight高度的内容是可见的。
3 enterAlways
- 手指 向下滑动时,效果和scroll是一样的
- 手指向上滑动时,效果和scroll是不一样的,会先收起来flag为enterAlways的View,然后才滑动列表
4 enterAlwaysCollapsed
enterAlwaysCollapsed,enterAlways以及minHeight属性一起配合使用,采用这个标志位,主要是为了使得手指向下移动时出现下面这个效果:
- 优先滚动AppBarLayout中的子View,但是并不是滚动到全部展开,而是只滚动到minHeight
- AppBarLayout中的子View滚动到minHeight之后,开始滚动列表,直到列表滚动到头部
- 列表滚动到头部之后,开始滚动AppBarLayout中的子View,直到它完全展开
5 snap
默认情况下,在手指从屏幕上抬起之后,AppBarLayout中子View的状态就不会变化了,而如果我们设置了snap标志位,那么在手指抬起之后,会根据子View当前的偏移量,决定是让它变为收起还是展开状态。
6 flag总结
在区分这些flag之前,我们先描述几个状态,这样会比较方便理解各个flag的意义
- enter: 表示的是view进入到页面可视区域,也就是向下滑动
- exit : 表示view退出页面可视区域,也就是向上滑动
- collapsed : 类似于enter和exit的中间状态,把View挂到半路。
那么
exitUntilCollapsed表示的就是退出可视区域时会在minHeight出停下
enterAlwaysCollapsed表示的就是进入可视区域时会在minHeight处停下。
enterAlways表示的就是进入可视区域时,会优先滑动设置了此flag的view
网友评论