AppBarLayout 基础总结

2016-12-03  本文已影响0人  逗比喵喵

学习 详细分析AppBarLayout的五种ScrollFlags 的总结笔记.

AppBarLayout 是用于与导航栏(Toolbar), 顶部标签栏(TabLayout一起使用, 来达到 MD 风格中 App Bar 的一些滚动交互设计效果.

滑动行为 Scrolling Behavior

定义在 AppBarLayout 中的子 View 需要明确设置各自的滑动行为:

滑动行为的参数取值是系统定义好的五个常量, 位 AppBarLayout.LayoutParams 类中.

// 在代码中
Toolbar toolbar = ... // AppBarLayout 里的 Toolbar
AppBarLayout.LayoutParams params = 
    (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | 
    AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);

// 在 XML 中
app:layout_scrollFlags="scroll|snap"

SCROLL

子 View 伴随着滚动事件而滚出或滚进屏幕.

注意两点:

ENTER_ALWAYS

本质是设置向下滚动时 Scrolling View 和子 View之间的滚动优先级.

对比:

ENTER_ALWAYS_COLLAPSED

enterAlways 的附加值. 这里涉及到子 View 的高度和最小高度, 向下滚动时, 子 View 先向下滚动最小高度值, 然后 Scrolling View 开始滚动, 到达最小高度的边界时, 子 View 再向下滚动, 直至显示完全.

...
android:layout_height="200dp"
android:minHeight="56dp"
...
app:layout_scrollFlags="scroll | enterAlways | enterAlwaysCollapsed"
...

EXIT_UNTIL_COLLAPSED

这里也涉及到最小高度. 发生向上滚动事件时, 子 View 向上滚动退出直至最小高度, 然后 Scrolling View 开始滚动. 对比 enterAlwaysCollapsed, 子 View 不会完全退出屏幕.

SNAP

子 View 不会存在局部显示的情况,滚动子 View 的部分高度,当我们松开手指时, 子 View 要么向上全部滚出屏幕, 要么向下全部滚进屏幕.

...
android:layout_height="200dp"
...
app:layout_scrollFlags="scroll|snap"
...
上一篇下一篇

猜你喜欢

热点阅读