AppBarLayout的五种ScrollFlags

2024-05-09 01:58

本文主要是介绍AppBarLayout的五种ScrollFlags,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ScrollFlags共有五种常量值供AppBarLayoutChild View使用,在xml布局文件中通过app:layout_scrollFlags设置,对应的值为:
scroll
enterAlways
enterAlwaysCollapsed
exitUntilCollapsed
snap
也可以在代码中使用setScrollFlags(int)进行设置,具体使用及效果请看下面内容

scroll:

屏幕向上滑动时AppBarLayout中的Toolbar先被隐藏然后RecycleViewitem才会开始滚动,向下滑动时当RecycleViewitem到达顶部时AppBarLayout中的Toolbar才会开始展示。注意两点:第一点,如果使用了其他值,必定要使用这个值才能起作用;第二点:如果在这个Toolbar前面的任何其他child View没有设置这个值,那么这个Toolbar设置的任何属性都将会失去作用

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/main_content"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><com.google.android.material.appbar.AppBarLayoutandroid:id="@+id/appbar"android:layout_width="match_parent"android:layout_height="100dp"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="match_parent"android:visibility="visible"app:layout_scrollFlags="scroll"app:title="scroll"/></com.google.android.material.appbar.AppBarLayout><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rvToDoList"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"/></androidx.coordinatorlayout.widget.CoordinatorLayout>

如图:

注意上文中的第二点:如果在这个Toolbar前面的任何其他child View没有设置这个值,那么这个Toolbar设置的任何属性都将会失去作用

比如下面的代码TextViewToolbar的前一个child view,并且TextView中并没有设置app:layout_scrollFlags="scroll",这就导致Toolbar中设置的scroll是无效的

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/main_content"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><com.google.android.material.appbar.AppBarLayoutandroid:id="@+id/appbar"android:layout_width="match_parent"android:layout_height="100dp"><TextViewandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_marginLeft="15dp"android:gravity="center_vertical"android:text="child view 2"android:textColor="#000000"android:textSize="20sp"android:textStyle="bold"/><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:visibility="visible"app:layout_scrollFlags="scroll"app:title="scroll"/></com.google.android.material.appbar.AppBarLayout><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rvToDoList"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"/></androidx.coordinatorlayout.widget.CoordinatorLayout>

如图:

enterAlways

屏幕向上滑动时AppBarLayout中的Toolbar先被隐藏然后RecycleViewitem才会开始滚动,向下滑动时先将Toolbar展示,然后RecycleViewitem才会开始滚动。这里要注意的是一定要设置scroll这样才能让enterAlways产生效果

app:layout_scrollFlags="scroll|enterAlways"

如图:

enterAlwaysCollapsed

enterAlwaysCollapsedenterAlways的附加值,因此要同时设置enterAlwaysenterAlwaysCollapsed,并且要设置一个新的参数android:minHeight="",屏幕向上滑动时AppBarLayout中的Toolbar
先被隐藏然后RecycleViewitem才会开始滚动,向下滑动时先展示android:minHeight=""中设置的高度然后将RecycleViewitem滚动至顶部,最后将Toolbar剩余高度展示。

 app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"

如图:

exitUntilCollapsed

exitUntilCollapsed类似enterAlwaysCollapsed但是效果正好相反,滑动时始终保留android:minHeight=""设置的最小高度,向下滑动时到达RecycleViewitem顶部时才会将Toolbar剩余部分展示出来

app:layout_scrollFlags="scroll|exitUntilCollapsed"

如图:

snap

snap是一个吸附效果类似于 ViewPager

app:layout_scrollFlags="scroll|snap"

如图:

这篇关于AppBarLayout的五种ScrollFlags的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972066

相关文章

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

PDF文件压缩,总结了五种压缩方法

PDF文件压缩,PDF文件在日常工作和生活中非常常见,但由于其体积较大,传输和上传时常会遇到限制。为了有效解决这一问题,PDF文件的压缩变得尤为重要。为了帮助你轻松应对大文件传输的困扰,本文将为你归纳五种实用的PDF文件压缩方法。 方法一:使用专业的PDF转换器 专业的PDF转换器是压缩PDF文件的高效工具之一,这类软件通常具有友好的用户界面和简便的操作流程。 优点:操作简单且压缩效果稳

工作加速器:五种思维导图策略优化你的日常

思维导图是一种非常有效的图形工具,它能够清晰地展示发散性思维,并帮助我们将大量信息有序地组织起来。这种工具在日常生活和工作中都非常实用,因其简洁高效的特点,受到了广泛的欢迎。无论是在头脑风暴、项目规划,还是在信息整理方面,思维导图都能发挥出色的作用。思维导图有多种类型,其中最常见的包括简单思维导图、概念图、组织架构图、流程图和时间线图。这些不同类型的思维导图各有特点,适用于不同的场景。 1. 简

水平居中的五种方法及其优缺点

<div class="parent"><div class="child">test</div></div> 第一种: .parent{text-align: center;}.child{display: inline-block;}优点:代码少,兼容性好  inline-block ie6-7不兼容(可用inline+zooom:1) 缺点:text-al