AppBarLayout的五种ScrollFlags

app:contentScrim="?attr/colorPrimary" 

属性的效果:


AppBarLayout的五种ScrollFlags_第1张图片
展开状态


首先看一下未加入app:contentScrim属性的效果

AppBarLayout的五种ScrollFlags_第2张图片
未加入属性


可以看见把图片的当作toolbar来展示

在看一下加入属性的效果:


AppBarLayout的五种ScrollFlags_第3张图片
加入属性的效果


当上拉toolbar的位置时,显示的是系统自定义的toolBar

android:fitsSystemWindows 属性

一个boolean值的内部属性,让view可以根据系统窗口(如status bar)来调整自己的布局,如果值为true,就会调整view的padding属性来给system windows留出空间。用于沉浸式状态栏!

就是图1的效果

app:expandedTitleMarginStart="48dp"属性

在展开的标题文本的起始端指定额外的空间

简单的说:

就是图1中龙都大朝距离屏幕左边的距离

与之对应的是app:expandedTitleMarginEnd="64dp"

距离右边屏幕的距离

app:layout_scrollFlags 属性

必须是一个或者多个值 用 | 分开

layout_scrollFalgs属性有5个值

1. enterAlways 值4 

2.enterAlwaysCollapsed 值8

3. exitUntilCollapsed 值2

4. scroll 值 1 

5. snap 值10 

 scroll属性

所有想滚动出屏幕的view 都必须设置这个flag,如果不设置这个flag view会被固定在屏幕顶部。


scroll属性

可以看出数据滑动到第一条继续向下滑动,toolbar才会跟着滑出来

scroll | enterAlways


和scroll相比较,区别在与那个view现滑动,scroll首先滑动的是列表,列表的数据全部滚动完毕,才开始toolbar滑动。而scroll | enterAlways首先滑动的是toolbar (应该是调用这个属性的View,这里是在AppToolBar中添加的属性 就叫他toolbar),然后再去滑动其他的view。只是优先级先后的问题。

scroll | enterAlways|enterAlwaysCollapsed

先上图



enterAlwaysCollapsed是enterAlways的附加标志,向上滚动时,首先会滚动到最小高度,然后在继续向上滚动,滚动到Recycler的第一条数据就会全部展示出来。最小高度minHeignt

exitUntilCollapsed

直接上图


类似于app:layout_scrollFlags = scroll | enterAlways|enterAlwaysCollapsed

不同的是在滑动过程中,最小高度的view一直存在,Recycler滚到第一条数据 继续向上滑动才会显示全部。

app:layout_scrollFlags="scroll|snap"


滑动的时候松手,要么全部滚出屏幕,要么全部滚进屏幕。

最后贴上 xml布局


````

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

tools:context=".activity.ListCartoonDetailActivity">

android:id="@+id/list_detail_app_bar"

android:layout_width="match_parent"

android:layout_height="@dimen/appbar_height"

android:fitsSystemWindows="true"

android:theme="@style/AppTheme.AppBarOverlay">

android:id="@+id/collapsing_toolbar_layout"

android:layout_width="match_parent"

android:fitsSystemWindows="true"

android:layout_height="match_parent"

app:contentScrim="?attr/colorPrimary"

app:expandedTitleMarginEnd="64dp"

app:expandedTitleMarginStart="48dp"

app:layout_scrollFlags="scroll|exitUntilCollapsed">

android:id="@+id/iv_list_detail"

android:fitsSystemWindows="true"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:scaleType="centerCrop"

android:src="@mipmap/picccccccc"/>

android:id="@+id/list_detail_toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

app:layout_collapseMode="pin">

android:id="@+id/list_detail_float"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="16dp"

android:src="@mipmap/ic_github"

app:layout_anchor="@id/list_detail_app_bar"

app:layout_anchorGravity="end|right|bottom"

app:rippleColor="@color/material_lime_a700"/>

android:id="@+id/list_detail_swipe"

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:layout_behavior="@string/appbar_scrolling_view_behavior">

android:id="@+id/list_detail_recycler_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:paddingBottom="8dp"

android:paddingLeft="8dp"

android:paddingRight="8dp"

android:paddingTop="16dp">

````


你可能感兴趣的:(AppBarLayout的五种ScrollFlags)