AppBarLayout学习笔记

LinearLayout的子类

AppBarLayout要点:

  1. 功能:让子View(AppBar)可以选择他们自己的滚动行为。

  2. 注意:需要依赖CoordinatorLayout作为父容器,同时也要求一个具有可以独立滚动的兄弟节点(或兄弟节点的子view可以滚动)才能发挥其功能。

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.arenas.appbarlayouttest.MainActivity"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- AppBarLayout,作为CoordinatorLayout的子类 -->
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:fitsSystemWindows="true"
        android:layout_height="wrap_content"
        >
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            />
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
        <!-- Your scrolling content -->
        <TextView
            android:layout_width="match_parent"
            android:layout_margin="20dp"
            android:text="text"
            android:layout_height="wrap_content"/>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

然后再Activity中设置好toolbar即可运行程序,可以看到效果……

注意:

兄弟节点的app:layout_behavior="@string/appbar_scrolling_view_behavior"属性很重要;

AppBarLayout子view的app:layout_scrollFlags属性很重要,其值有三个: 

scroll: 所有想滚动出屏幕的view都需要设置这个flag(所以,这里的toolbar设置了),没有设置这个flag的view将被固定在屏幕顶部。

enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见(向下滚动,toolbar又出现),启用”快速返回”模式。

enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只会在最小高度处进入,只有当滚动视图到达顶部时才扩大到完整高度。

exitUntilCollapsed: 在滚动过程中,只有当视图折叠到最小高度的时候,它才退出屏幕。

注意AppBarLayout的兄弟节点(或兄弟节点的子view)一定要是可以滚动的View/ViewGroup,如:NestedScrollView,RecycleView;(据说ListView不行,木有测试了)

那些使用Scroll flag的视图必须在其他没有使用Scroll flag的视图之前声明。这样才能确保所有的视图从顶部撤离,剩下的元素固定在前面(译者注:剩下的元素压在其他元素的上面)。

参考文章:http://blog.csdn.net/ydxlt/article/details/50932432

原文地址:https://www.cnblogs.com/i-love-kobe/p/5543247.html