Android Material Design详解(一):AppBarLayout

版权声明:本文为博主原创,若转载,请指明转自朱志强的博客!不足之处,还望不吝赐教,共同成长!祝每一个热爱Android的人都有美好的明天! https://blog.csdn.net/jungle_pig/article/details/53455806

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"

猜你喜欢

转载自blog.csdn.net/jungle_pig/article/details/53455806
今日推荐