简述
今天来给大家讲一讲AppBarLayout的使用,网上有很多的例子,但是讲的都比较浅显。
怎么导入?
AppBarLayout是Support包里面提供的一个控件。所以要使用这个控件,就要引用Support包。引入比较简单,就是在你的运行module里面的Gradle文件,添加如下的一行代码:
dependencies{
........
compile'com.android.support:design:23.3.0'
}
Sync Project with Gradle 一下,然后在你的布局文件里面,即可使用。
它是什么?
百度了一下,只搜到这么一句话:AppBarLayout跟它的名字一样,把容器类的组件全部作为AppBar。 不是很明白,我们来看看他的源码。
类介绍上面说( Google翻译的 ):
1. 它是一个垂直方向的LinearLayout,实现material特性的app bar,即手势滑动
2. 它作为容器,里面的子控件必须提供他们自己的滑动行为,怎么提供呢?通过setScrollFlags
3. 它必须使用在CoordinatorLayout容器里面,如果在其他的容器里面,它很多的功能将不能工作。
4. 它什么时候滑动呢? 他需要另一个滑动View去控制它滑动,怎么控制呢?通过ScrollingViewBehavior的方式。
它的下面还有使用的例子,我这里就不贴使用的。
它有什么?
我们继续往下看他的代码,看看有哪些对我们有用。
他本身接受那些xml的属性?看它的代码,我们发现是3个,如下图。
elevation :设置它“浮”起来的高度,说白了就是阴影大小
background: 这个就不用我说了吧
expanded:初始化时候 是展开还是收缩状态。
那它的子控件有接受哪些xml属性呢?他既然是ViewGroup,我们看看LayoutParams:
1. scrollFlags: 前面好像提过,子控件必须通过这个属性提供他们自己滑动行为。
那他们有哪些滑动行为?我也不知道,咱们找找那地方用到getScrollFlags()的方法,我猜是绘制子控件的时候,去Support包下看代码。
也没用文档说明他们是什么意思,那我们一个个试试,结论如下:
scroll:好像就这个有用,设置这个子控件会随着绑定行为Scroll控件,线上滑动时候,会划出屏幕。
enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
exitUntilCollapsed: 滚动退出屏幕,最后折叠在顶端。
enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见,启用快速“返回模式”
我们在往下看看,还要哪些代码,对我们有作用,打开类的OutLine,看它的成员。
发现有个静态内部类ScrollingViewBehavior,看名字就知道给ScrollingView用的,你滚动的时候会触发这个行为发生。
源码就不细说了,后面会有如何自定义Behavior。
怎么使用?
先看看布局文件。
父容器要求是CoordinatorLayout
AppBarLayout里面还是常规的设置。子控件设置滑动方式。
这里有一点要提到,就是那个垂直方向的线程布局,滑动的时候,如果上面的控件不能滑动,那下面的控件也不会滑动。
最后他还需要一个ScrollView来控制它什么时候滑动,这里通过behavior去设置。这里String其实是;
代码如下,就是装载数据,其他什么都没做:
效果如下,可以上下滑动收缩:
今天就介绍到这吧。