Android Material Design:AppBarLayout

AppBarLayout主要用来包裹Toolbar,实现Material Design特性的 app bar。AppBarLayout带有阴影,并且可响应滚动控件,做出某种滚动效果。

一、使用条件

①AppBarLayout和滚动控件必须为CoordinatorLayout的直接子View
②滚动控件必须实现NestedScrollingChild接口,如RecyclerView,NestedScrollingView
③为AppBarLayout包裹的View设置ScrollFlags,指定以何种效果响应滚动控件
④设置滚动控件的Behavior为ScrollingViewBehavior
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:minHeight="30dp"
            app:title="标题"
            app:titleTextColor="#ffffff"
            app:layout_scrollFlags="scroll"/>
    </android.support.design.widget.AppBarLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>

二、5种ScrollFlag效果的含义

通过在布局文件中使用app:layout_scrollFlags指定AppBarLayout包裹的内容以何种滚动效果响应滚动控件。ScrollFlags有5种:scroll,enterAlways,enterAlwaysCollapsed,exitUntilCollapsed,snap。
其中,scroll是必须指定的,不然AppBarLayout不会做出任何响应。而且,几种效果并不是排斥关系,而是叠加关系,可以指定多个,用 | 隔开,就会得到叠加后的效果。

①scroll
基本效果,代表AppbarLayout包裹的内容会随着滚动控件一起滚动,始终位于滚动控件的顶部,就像是滚动控件的头布局一样。效果如下:
app:layout_scrollFlags="scroll"
②enterAlways
当AppBarLayout随滚动控件滚进屏幕时,不会等到滚动控件滚到顶部才进入,而是直接滚动,直至完全滚进屏幕。
效果如下:
app:layout_scrollFlags="scroll|enterAlways"
③enterAlwaysCollapsed
当AppBarLayout随滚动控件滚进屏幕时,不会等到滚动控件滚到顶部才进入,而是直接滚动,直至滚动到内容的最小高度完全显示,然后等到滚动控件滚到顶部时,继续滚动,直至全部滚进屏幕。需和enterAlways一起使用,否则无效。我们通过wrap_content或者?attr/actionBarSize指定Toolbar高度时,其高度就是最小高度的值(56dp),为了看到效果,所以我们显示把最小高度改为30dp。看一下效果:
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
④exitUntilCollapsed
当AppBarLayout随滚动控件滚出屏幕时,不会一直滚动到完全出了屏幕,而是滚动到只剩下最小高度的时候。效果如下:
app:layout_scrollFlags="scroll|exitUntilCollapsed"
⑤snap
如果AppBarLayout随滚动控件可滚进滚出的区域为整个AppBarLayout时,当滚动控件滚动结束,滚出的部分大于未滚出的部分,则自主滚动,直至完全滚出屏幕;反之,自主滚动,直至完全滚进屏幕。可滚进滚出区域为部分区域时(受enterAlwaysCollapsed或exitUntilCollapsed的约束),则会自主滚动到可滚动的终结位置。
效果如下:
app:layout_scrollFlags="scroll|snap"

 
5种效果可以适当叠加的,看你的需求。这里随便举个例子:
app:layout_scrollFlags="scroll|enterAlways|exitUntilCollapsed"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vincent(朱志强)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值