Jetpack:021-Jetpack中的滑动列表

news2025/2/26 14:43:44

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 函数参数
    • 2.2 列表成员
  • 3. 示例代码
  • 4. 内容扩展
  • 5. 内容总结

我们在上一章回中介绍了Jetpack中底部导航栏相关的内容,本章回中主要介绍 滑动列表。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们先看一个场景:大家在使用手机时会打开联系人查找某位朋友,由于联系人比较多需要上下滑动才可以找到这位朋友,显示这么多联系人的页面就是滑动列表,它有两个特点:

  • 每行显示相同或者相似的内容;
  • 内容超过手机屏幕时可以滑动显示;

如果使用View开发Android时可以通过ListView或者RecycleView组件实现滑动列表,如果使用Compose开发时可以通过LazyColumn可组合函数实现滑动列表,本章回中将详细介LazyColumn这种滑动列表的使用方法。

2. 使用方法

可组合函数LazyColumn主要控制滑动列表,列表中的成员需要通过可组合函数Item控制。接下来我们分别介绍这两个可组合函数。

2.1 函数参数

可组合函数LazyColumn提供了相关的参数来控制列表,下面是常用的参数:

  • contentPadding参数:主要用来控制列表内容的间距,它会影响滑动列表中所有的内容;
  • reverseLayout参数:表示是否把列表内容倒置,默认值为false,表示正常显示列表中的内容;
  • userScrollEnabled参数:表示是否让滑动列表中的内容滚动显示,默认值为true,表示可以滑动显示;
  • content参数:用来存滑动列表中的内容,它的类型是LazyListScope.() -> Unit,需要通过item函数来赋值;

除了上面介绍的参数外,该函数和Column函数拥有一些共同的参数,比如控制对齐的horizontalAlignmentverticalArrangement参数,这些参数的功能我们在Column函数中介绍过,这里就详细介绍了,如果有看官忘记的话可以点击这里查看以前的内容。

2.2 列表成员

列表成员通过ItemItems函数来实现,通常使用尾lambda语法把它放到LazyColumn函数中,还有一个Items函数,它与Item的区别在于可以把整个列表当作滑动列表的成员,相当于是列表赋值。

这两个函数没有太多的参数,只有一个content参数比较常用,稍后我们将通过示例代码来演示这两个函数的使用方法。

3. 示例代码

LazyColumn(
    //需要通过scaffold传递的参数来设置顶部的边距,不然topBar会和mainScreen中的内容重叠
    modifier = Modifier.padding( top = paddingValues.calculateTopPadding()),
    contentPadding = PaddingValues(horizontal = 16.dp),
    //指定list内容之间的间隔
    verticalArrangement = Arrangement.spacedBy(8.dp),
    //控制列表是否能够滚动,默认值为true,表示可以滚动
    userScrollEnabled = false
) {
    //不能直接使用可组合函数赋值,需要借助item函数
//        Text(text = "this is a list")
    item {
        Text(text = "this is a list")
    }


    //指定list的数量,并且添加分隔线
    items( count = 9, itemContent = { index ->
        Text(text = "This is item ${index+1}")
        Divider(color = Color(0.1f,0.8f,0.9f,1.0f))
    })

    //通过items直接使用list
    items(strList){ item ->
        Text(text = item )
    }
}

上面的示例代码中演示了LazyCloumn以及itemItems三个函数的用法,我们在代码中关键位置添加了注释,这样方便大家理解代码。编译并且运行上面的程序可以得到以下运行效果图。图中还包含一个TopBar,大家可以参考TopBar的内容去编写。
在这里插入图片描述

4. 内容扩展

我们在上面介绍的滑动列表是垂直滚动的滑动列表,还一种水平滚动的滑动列表,它通过LazyRow可组合函数实现,该函数的用法和LazyColumn函数的用法十分相似,因此我就不再介绍了。

我们再讨论一下滑动列表的性能,按照官方文档的说法,它只会加载需要显示在页面上的成员,因此性能比较高,它的原理类似于Android View中的RecyclerView,我们在这里只介绍基本的用法,以后有机会了再深入讨论与性能相关的知识。

5. 内容总结

最后,我们对本章回中的内容做一个全面的总结:

  • 滑动列表通过可组合函数LazyColumn和LazyRow实现;
  • 滑动列表中的成员通过可组合函数Item或者Items实现;
  • 滑动列表中的成员数量比较多时,它也会表现出良好的性能;

看官们,与Jetpack中滑动列表相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1148346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Git】HEAD detached from xxx 问题及解决方案

问题背景 最近用git的时候遇到了一个问题,场景是这样的。 我有一个分支main,其中有两个commit A和B,A是最新commit,B是历史commit。我先切到B看了看之前的代码,然后切到A,并进行了一些代码修改&#xff0…

H5游戏源码分享-跑酷游戏熊出没

H5游戏源码分享-跑酷游戏熊出没 <!DOCTYPE html> <html manifest"manifest.mf"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><meta http-equiv"Content-Type" content"…

一、灵动mm32单片机_开发环境的搭建(Keil)

1、安装Keil MDK。 略。 2、安装芯片对应的Pack包。 (1)这里以MM32F0130单片机为例。 (2)进入灵动微电子官网。上海灵动微电子股份有限公司 (3)点击“支持”→“KEILPacl”。 (3)点击下载Pack包。 (4)下载后&#xff0c;解压下载的压缩包&#xff0c;找到对应的Pack包&…

PostgreSQL InvalidMessage Cache 同步机制

文章目录 背景InvalidMessages 基本类型InvalidMessages 数据结构概览共享内存 的 "ring-buffer" 结构Backend 本地的 InvalidMessages管理SharedInvalCatalogMsgSharedInvalCatcacheMsgSharedInvalRelcacheMsgSharedInvalSnapshotMsgSharedInvalSmgrMsgSharedInvalR…

【C++深入浅出】模版初识

目录 一. 前言 二. 泛型编程 三. 函数模版 3.1 函数模版的概念 3.2 函数模版的格式 3.3 函数模版的原理 3.4 函数模板的实例化 3.5 模板参数的匹配原则 四. 类模版 4.1 类模版的定义 4.2 类模版的实例化 一. 前言 本期我们要介绍的是C的又一大重要功能----模版。通…

DIY相机(一)libcamera库

相机选型 DIY相机首先是要确定使用的相机型号。兼容树莓派&#xff0c;画质好一些的&#xff0c;目前主要有两款&#xff1a;一是Raspberry Pi Camera Module 3&#xff0c;二是Raspberry Pi HQ Camera。 下图是Raspberry Pi Camera Module 3的相关特性。支持自动对焦和HDR等…

opencv dnn模块 示例(20) 目标检测 object_detection 之 yolor

文章目录 1、论文介绍1.1、YOLOR思想动机1.2、隐式知识学习1.2.1、隐式知识如何工作1.2.2、隐式知识统一网络建模 1.3、实验1.4、总结 2、测试2.1、opencv dnn2.1.1、代码2.1.2、结果 2.2、测试效率 YOLOR出自论文You Only Learn One Representation: Unified Network for Mult…

【mfc/VS2022】计图实验:绘图工具设计知识笔记3

实现类对串行化的支持 如果要用CArchive类保存对象的话&#xff0c;那么这个对象的类必须支持串行化。一个可串行化的类通常有一个Serialize成员函数。要想使一个类可串行化&#xff0c;要经历以下5个步骤&#xff1a; 1、从CObject派生类 2、重写Serialize成员函数 3、使用DE…

【计算机网络 】传输层——UDP

目录 传输层传输层概念再谈端口号协议号和端口号端口号区域常见端口号pidof UDPUDP协议格式UDP协议的特点UDP的缓冲区UDP传输数据注意事项 传输层 传输层概念 在学习HTTP等应用层协议时&#xff0c;为了便于理解&#xff0c;可以简单的认为HTTP协议是将请求和响应直接发送到了…

​​​​​​​为什么你的Word文件无法移动到U盘

为什么你的Word文件无法移动到U盘 你是否遇到过这样的情况&#xff1a;你在苹果电脑上编辑了一个Word文档&#xff0c;想要把它拷贝到一个U盘上&#xff0c;但是却发现无法操作。你可能会感到很奇怪&#xff0c;为什么你的Word文件无法移动到U盘呢&#xff1f;这是因为苹果电脑…

ESM蛋白质语言模型系列

模型总览 第一篇《Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences 》ESM-1b 第二篇《MSA Transformer》在ESM-1b的基础上作出改进&#xff0c;将模型的输入从单一蛋白质序列改为MSA矩阵&#xff0c;并在Tran…

TensorRT量化实战课YOLOv7量化:pytorch_quantization介绍

目录 前言1. 课程介绍2. pytorch_quantization2.1 initialize函数2.2 tensor_quant模块2.3 TensorQuantizer类2.4 QuantDescriptor类2.5 calib模块 总结 前言 手写 AI 推出的全新 TensorRT 模型量化实战课程&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 该…

分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测(自注意力机制)

分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09; 目录 分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09;分类效果基本描述程序设计参考资料 分类效果 基本描述 1…

【MySQL--->内外连接】

文章目录 [TOC](文章目录) 一、内连接二、左外连接三、右外连接 一、内连接 内连接就是将两个表连接进行笛卡尔积查询 显示SMITH的名字和部门名称 二、左外连接 左外连接就是以左面的表为主&#xff0c;即便是右边的表没有而左边表项中有的&#xff0c;依然显示 查询所有学…

HTML基础总结——速通知识点

一、基础知识点 Web标准构成&#xff1a; HTML页面的固定结构 <html><head><title>网页的标题</title> </head> <body>网页的主体内容 </body> </html>二、语法 2.1注释 在vscode中&#xff1a;将光标置于需要注释的行&a…

引入个性化标签的协同过滤推荐算法研究_邢瑜航

第3章 引入个性化标签的I-CF推荐算法 3.2.2 相似性度量方法 3.2.3 改进后的算法步骤与流程

IntelliJ IDEA 把package包展开和压缩

想要展开就把对勾取消&#xff0c;想要压缩就勾上

【多线程面试题十二】、阻塞线程的方式有哪些?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;阻塞线程的方式有哪些&a…

【LeetCode力扣】42. 接雨水

目录 1、题目介绍 2、解题思路 2.1、暴力破解法 2.2、双指针法 1、题目介绍 原题链接&#xff1a; 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1]输出&#xff1a;6解释&#xff1a;上面是由…

Python打包成.exe文件直接运行

文章目录 前言pyinstaller.exe文件具体步骤第一步&#xff1a;安装pyinstaller第二步&#xff1a;进入要打包文件的目录第三步&#xff1a;执行文件第四步&#xff1a;发给好友 拓展尾声 前言 很多小伙伴在阅读了博主的文章后都积极与博主交流&#xff0c;在这里博主很感谢大家…