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

相关文章

透彻!驯服大型语言模型(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

AppBarLayout.OnOffsetChangedListener的使用

如果没听说过AppBarLayout.OnOffsetChangedListener,那么就先看这里: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0616/3052.html 我在项目中的使用: Java代码   import android.content.Context;  import

Java中五种界面布局类和实际中的使用

JPanel和JFrame之间的联系: (JPanel)Panel是一个轻量级的容器,由于不是顶级的容器,故其必须放在(JFrame)Frame等高级容器上,这样就可以在一个Frame(JFrame)上通过Panel和五种界面布局管理器来构建复杂的应用程序界面。 下面来介绍一下五种界面布局管理器: 1、  FlowLayout: 流式布局用于安排有向流中的组件,流的方向取决于容器的comp

约瑟夫问题的五种实现方法

一、队列 #include <stdio.h>#include <queue>using namespace std;queue<int> q;int n, m, cnt, out, a[101]; //a[i]=0表示在圈里 int main(){scanf("%d %d", &n, &m);for(int i=1; i<=n; i++){q.push(i);}while(!q

吃透Java基础三:触发类初始化的五种方式

一:类的生命周期 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载七个阶段,其中验证、准备、解析这三个阶段统称为链接。 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类加载过程必须按照这种顺序按部就班的开始。 二:类加载时机 什么情况下需要开始类加载过程的第一个阶段:加载 呢?Java虚拟机规范中并没有进行强制约束,这点

吃透Java基础二:创建对象的五种方式

一:使用new关键字 这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。 public static void main(String[] args) {People people = new People();} 二:使用Class类的newInstance方法 利用反射来获取class对象调用newInstance方法创建对象,其调

基于五种机器学习的某游戏数据分析与胜负预测系统设计与实现,采用Django+MySQL+HTML+CSS实现

本项目设计并实现了一个基于五种机器学习算法的游戏数据分析与胜负预测系统,旨在通过对游戏数据的深入分析,为玩家提供胜负预测与策略建议。系统采用 Django 作为后台框架,MySQL 作为数据存储,结合 HTML 和 CSS 构建前端界面,实现了一个功能全面、用户友好的平台。 主要功能 系统首先通过 Django 框架建立了一个高效的后端服务,能够接收用户上传的游戏数据,并将其存储到 MySQL