搜索
您的当前位置:首页正文

Material Design: AppBarLayout

来源:二三娱乐

简述


今天来给大家讲一讲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其实是;

代码如下,就是装载数据,其他什么都没做:

效果如下,可以上下滑动收缩:

今天就介绍到这吧。

Top