Android中导航栏滚动标志app:layout_scrollFlags详解

1.app:layout_scrollFlags属性介绍

前面介绍AppBarLayout和CollapsingToolbarLayout用法的时候,用到了app:layout_scrollFlags属性。其实这个滚动标志属性来自于AppBarLayout,它用来定义下级控件的具体滚动行为,比如说是先滚还是后滚,是滚一半还是全部滚,是自动滚还是手动滚等等。

2.不同滚动行为的场景

  • AppBarLayout的滚动依赖于页面主体的滚动,与页面主体相对应的,可将AppBarLayout称作页面头部。既然一个页面分为头部和主体两部分,那么就存在谁先滚谁后滚的问题了。
  • AppBarLayout内部的高度也可能变化,比如它嵌套了可折叠工具栏布局CollapsingToolbarLayout。既然AppBarLayout的高度是变化的,那也得区分是滚一半还是滚全部。
  • AppBarLayout被拉动了一段还没拉完,此时一旦松开手指,一般是就地停住。但半路刹车有碍观瞻,那么就得判断是继续停着不动,还是继续向上收缩,或是继续向下展开。

3.五种滚动标志介绍

  • scroll:该标志表示头部与主体一起滚动。
  • enterAlways:该标志表示头部与主体先一起滚动,头部滚到位后,主体继续向上或者向下滚。
  • exitUntilCollapsed:该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。具体的滚动行为分成向上滚动和向下滚动两种,其中向上滚动表示头部先往上收缩,一直滚到折叠的最小高度;然后头部固定不动,主体继续向上滚动;而向下滚动表示头部固定不动,主体先向下滚动,一直滚到主体全部拉出;然后头部向下展开。
  • enterAlwaysCollapsed:该标志一般跟enterAlways一起使用,它与enterAlways的区别在于有折叠操作,而单独的enterAlways没有折叠。具体的滚动行为也分成向上滚动和向下滚动两种,其中向上滚动表示头部先往上收缩,一直滚到折叠的最小高度;然后头部与主体先一起滚动,头部滚到位后,主体继续向上。而向下滚动表示头部与主体先一起滚动,一直滚到头部折叠的最小高度;然后主体向下滚动,滚到位后头部继续向下展开。
  • snap:在用户手指松开时,系统自行判断,接下来是全部向上滚到顶,还是全部向下展开。

4.5种滚动标志互相之间的区别

滚动标志取值 说明
scroll 简单朴素的滚动,没什么花样
enterAlways 该标志与scroll的区别在于,它会让头部盖住主体,而scroll不会盖住
exitUntilCollapsed 设置该标志后,页面上总会看到工具栏
enterAlwaysCollapsed 该标志与enterAlways的区别在于,它支持layout_collapseMode设定的折叠效果
snap 设置该标志后,每当用户松开手势,系统会自动判断是向上收缩,还是向下展开

猜你喜欢

转载自blog.csdn.net/weixin_38322371/article/details/114987302