我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android Jetpack Compose如何实现列表吸顶效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android Jetpack Compose如何实现列表吸顶效果

这篇文章主要介绍“Android Jetpack Compose如何实现列表吸顶效果”,在日常操作中,相信很多人在Android Jetpack Compose如何实现列表吸顶效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android Jetpack Compose如何实现列表吸顶效果”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    安卓传统的 Recyclerview 打造悬浮头部StickyHeader的吸顶效果,十分麻烦,而在Compose中就简单多了

    stickyHeader

    Compose设计的时候考虑得很周到,他们提供了stickyHeader

    作用就是添加一个粘性标题项,即使在它后面滚动时也会保持固定。标头将保持固定,直到下一个标头取而代之。

    参数key - 表示唯一的密钥键。

    它不允许对列表出现使用相同的键。密钥的类型应该可以通过 Bundle 保存。如果传递了 null,则列表中的位置将代表键。当指定键时,滚动位置将基于该键保持,这意味着如果在当前可见项目之前添加删除项目,则具有给定键的项目将保留为第一个可见项目。

    参数content 传入Composable控件就即可显示

    实体类

    创建一个实体类标题和内容

    data class Post(    val title:String,    val contentData:List<String>)

    加载假数据

    val list : MutableList<Post> = mutableListOf()for (index in 1..10) {    val contentData :MutableList<String> = mutableListOf()    for (i in 1..30){        contentData.add("内容 $i")    }    list.add(Post("标题$index",contentData))}

    定义一个垂直滚动列表,仅构成和布局当前可见的项目

    LazyColumn {    list.forEachIndexed { position, post ->        stickyHeader {            ListTitle(title = post.title)        }        items(post.contentData.size) { route ->            StructureItem(post.contentData)        }        if (position <= list.size - 1) {            Divider()        }        Spacer(modifier = Modifier.height(10.dp))    }}

    吸顶标题

    接着封装一个吸顶标题,并传出点击事件

    @Composablefun ListTitle(    onSubtitleClick: () -> Unit = {}) {        MediumTitle(            title = title,            modifier = Modifier.align(Alignment.CenterVertically).clickable {                onSubtitleClick.invoke()            }}

    效果图

    Android Jetpack Compose如何实现列表吸顶效果

    二级条目

    接着写二级条目

    FlowRow可以将其子项置于水平流中的可组合项。如果水平空间太小而无法将所有子项放在一行中,则可能会使用多行。传统的流式布局

    用法很简单,和row一样

    FlowRow {    for (item in bean) {        TextButton(           ....        }    }}

    在content可组控件里面添加多个TextButton即可

    fun StructureItem{    Column{        FlowRow() {            for (item in bean) {                TextButton                {                    Text()                }            }        }    }}

    效果图

    Android Jetpack Compose如何实现列表吸顶效果

    接着吸顶标题放在LazyColumn里面就完成了

    LazyColumn() {    list.forEachIndexed { position, post ->        stickyHeader {            ListTitle(title = post.title) {                //点击事件            }        }        item {            StructureItem(post.contentData)            Spacer(modifier = Modifier.height(10.dp))        }    }}

    完整代码

    @OptIn(ExperimentalFoundationApi::class)@Composablefun StickyHeaderScreen() {    val list: MutableList<Post> = mutableListOf()    for (index in 1..10) {        val contentData: MutableList<String> = mutableListOf()        for (i in 1..12) {            contentData.add("内容 $i")        }        list.add(Post("标题$index", contentData))    }    LazyColumn(        modifier = Modifier            .fillMaxWidth()            .fillMaxHeight(),        contentPadding = PaddingValues(vertical = 10.dp)    ) {        list.forEachIndexed { position, post ->            stickyHeader {                ListTitle(title = post.title) {                    //点击事件                }            }            item {                StructureItem(post.contentData)                Spacer(modifier = Modifier.height(10.dp))            }        }    }}data class Post(    val title: String,    val contentData: List<String>)@Composablefun ListTitle(    modifier: Modifier = Modifier,    title: String,    isLoading: Boolean = false,    onSubtitleClick: () -> Unit = {}) {    Row(        modifier = modifier            .placeholder(false)            .fillMaxWidth()            .height(ListTitleHeight)            .background(color = Color.Gray)    ) {        Box(            modifier = Modifier                .padding(horizontal = 10.dp)                .width(5.dp)                .height(16.dp)                .align(Alignment.CenterVertically)                .background(color = Color.Black)        )        MediumTitle(            title = title,            color = Color.Black,            modifier = Modifier.align(Alignment.CenterVertically).clickable {                onSubtitleClick.invoke()            },            isLoading = isLoading        )        Spacer(modifier = Modifier.weight(1f))    }}@Composablefun StructureItem(    bean: List<String>) {    Column(        modifier = Modifier            .fillMaxWidth()            .padding(top = 10.dp)    ) {        FlowRow(            modifier = Modifier.padding(horizontal = 6.dp)        ) {            for (item in bean) {                Box(modifier = Modifier.padding(horizontal = 2.dp, vertical = 3.dp)) {                    TextButton(                        modifier = Modifier.padding(horizontal = 3.dp).height(34.dp),                        shape = RoundedCornerShape(12.dp),                        onClick = { },                        colors = ButtonDefaults.textButtonColors(                            backgroundColor = themeColor                        )                    )                    {                        Text(                            item,                            color = Color.White                        )                    }                }            }        }    }}

    效果图

    Android Jetpack Compose如何实现列表吸顶效果

    到此,关于“Android Jetpack Compose如何实现列表吸顶效果”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Android Jetpack Compose如何实现列表吸顶效果

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Android Jetpack Compose如何实现列表吸顶效果

    这篇文章主要介绍“Android Jetpack Compose如何实现列表吸顶效果”,在日常操作中,相信很多人在Android Jetpack Compose如何实现列表吸顶效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
    2023-06-29

    如何使用Android实现上拉吸顶效果

    这篇文章给大家分享的是有关如何使用Android实现上拉吸顶效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下效果图1.home_layout.xml此布局即可实现上拉标题固定在顶部
    2023-06-29

    Android 实现当下最流行的吸顶效果

    开始逐渐领略到ItemDecoration的美~ 今天让我 使用 ItemDecoration 来完成 可推动的悬浮导航栏的效果,最终实现的效果如下图:具体实现步骤如下: 根据我前面的文章所讲的RecyclerView的基本使用,我们先来完
    2022-06-06

    小程序如何实现简单吸顶效果

    这篇“小程序如何实现简单吸顶效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“小程序如何实现简单吸顶效果”文章吧。要求:1.
    2023-06-30

    Android进阶CoordinatorLayout协调者布局实现吸顶效果

    这篇文章主要为大家介绍了Android进阶CoordinatorLayout协调者布局实现吸顶效果,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-29

    如何通过Jetpack Compose实现双击点赞动画效果

    这篇文章主要介绍如何通过Jetpack Compose实现双击点赞动画效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现步骤先红色画个爱心Icon( Icons.Filled.Favorite, "爱
    2023-06-28

    Android Compose如何实现联系人列表

    这篇文章主要介绍“Android Compose如何实现联系人列表”,在日常操作中,相信很多人在Android Compose如何实现联系人列表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android C
    2023-07-05

    Android Studio如何实现下拉列表效果

    这篇文章主要讲解了“Android Studio如何实现下拉列表效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android Studio如何实现下拉列表效果”吧!题目使用 ArrayA
    2023-06-30

    Android RecyclerView实现悬浮吸顶、分隔线、到底提示效果

    本文中所有效果通过ItemDecoration实现,通过此实现的可以与业务解耦,让RecyclerView的模板更加简洁,不关心任何辅助性ui,github地址 一、顶部吸附效果图二、顶部不吸附效果图三、不满一屏效果四、核心实现点 1、为什
    2022-06-06

    Android如何实现列表元素动态效果

    这篇文章主要介绍了Android如何实现列表元素动态效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何实现列表元素动态效果文章都会有所收获,下面我们一起来看看吧。前言列表是移动应用中用得最多的
    2023-06-29

    Android进阶NestedScroll嵌套滑动机制实现吸顶效果详解

    这篇文章主要为大家介绍了Android进阶NestedScroll嵌套滑动机制实现吸顶效果详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-29

    怎么在android应用中实现一个RecyclerView悬浮吸顶效果

    本篇文章为大家展示了怎么在android应用中实现一个RecyclerView悬浮吸顶效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MultiType-Adapter打造悬浮吸顶效果注:当前版本
    2023-05-31

    Android StickyListHeaders实现电话本列表效果

    本文实例为大家分享了StickyListHeaders电话本列表效果的具体代码,供大家参考,具体内容如下效果展示布局文件与listview使用方式一样,可以在布局文件中直接进行使用核心代码oncreat方法在oncreat方法中初始化控件,
    2023-05-31

    CSS3+JavaScript如何实现炫酷呼吸效果

    这篇文章给大家分享的是有关CSS3+JavaScript如何实现炫酷呼吸效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。用css3动画实现的一个简单炫酷效果,最终的效果图如下:页面结构(index.html):
    2023-06-08

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录