iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android Jetpack Compose如何实现列表吸顶效果
  • 288
分享到

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

2023-06-29 06:06:12 288人浏览 泡泡鱼
摘要

这篇文章主要介绍“Android Jetpack Compose如何实现列表吸顶效果”,在日常操作中,相信很多人在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如何实现列表吸顶效果”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: Android Jetpack Compose如何实现列表吸顶效果

    本文链接: https://www.lsjlt.com/news/323213.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

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

    下载Word文档
    猜你喜欢
    • Android Jetpack Compose如何实现列表吸顶效果
      这篇文章主要介绍“Android Jetpack Compose如何实现列表吸顶效果”,在日常操作中,相信很多人在Android Jetpack Compose如何实现列表吸顶效果问题上存在疑惑,小编...
      99+
      2023-06-29
    • AndroidJetpackCompose实现列表吸顶效果
      目录stickyHeader实体类加载假数据吸顶标题二级条目完整代码效果图安卓传统的 Recyclerview 打造悬浮头部StickyHeader的吸顶效果,十分麻烦,而在Comp...
      99+
      2024-04-02
    • Android实现上拉吸顶效果
      本文实例为大家分享了Android实现上拉吸顶效果的具体代码,供大家参考,具体内容如下 效果图 1.home_layout.xml 此布局即可实现上拉标题固定在顶部 <xml...
      99+
      2024-04-02
    • 如何使用Android实现上拉吸顶效果
      这篇文章给大家分享的是有关如何使用Android实现上拉吸顶效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下效果图1.home_layout.xml此布局即可实现上拉标题固定在顶部<xml&n...
      99+
      2023-06-29
    • Android CoordinatorLayout+AppBarLayout顶部栏吸顶效果的实现
      1.控件简介。 CoordinatorLayout遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的折叠悬浮效果。   ...
      99+
      2023-10-06
      android
    • 原生js如何实现吸顶效果
      这篇文章给大家分享的是有关原生js如何实现吸顶效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现思路如下:1. div初始居普通文档流中2. 给window添加scroll事...
      99+
      2024-04-02
    • RecyclerVIew实现悬浮吸顶效果
      RecyclerVIew实现悬浮吸顶效果图 这里写图片描述主页面布局<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="htt...
      99+
      2023-05-30
      recyclerview 悬浮吸顶 recycle
    • Jetpack Compose怎么实现动画效果
      这篇文章将为大家详细讲解有关Jetpack Compose怎么实现动画效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述compose 为支持动画提供了大量的 api,通过这些 api 我们...
      99+
      2023-06-29
    • 小程序如何实现简单吸顶效果
      这篇“小程序如何实现简单吸顶效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“小程序如何实现简单吸顶效果”文章吧。要求:使页...
      99+
      2023-06-30
    • Jetpack Compose实现对角线滚动效果
      目录缘起初试探索学习FreeScrollStatefreeScroll总结缘起 不久前刷到 newki 前辈的文章,用自定义 viewGroup的方式实现了如图效果: Android...
      99+
      2023-02-09
      Jetpack Compose对角线滚动效果 Jetpack Compose对角线滚动 Jetpack Compose滚动
    • Android进阶CoordinatorLayout协调者布局实现吸顶效果
      目录引言1 CoordinatorLayout功能介绍1.1 CoordinatorLayout的依赖交互原理1.2 CoordinatorLayout的嵌套滑动原理2 Coordi...
      99+
      2023-01-29
      Android CoordinatorLayout吸顶 Android 协调者布局
    • react.js中怎么实现tab吸顶效果
      这篇文章给大家分享的是有关react.js中怎么实现tab吸顶效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在react项目开发中有一个需求是,页面滚动到tab所在位置时,t...
      99+
      2024-04-02
    • Android Compose如何实现联系人列表
      这篇文章主要介绍“Android Compose如何实现联系人列表”,在日常操作中,相信很多人在Android Compose如何实现联系人列表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
      99+
      2023-07-05
    • 小程序实现简单吸顶效果
      本文实例为大家分享了小程序实现吸顶效果的具体代码,供大家参考,具体内容如下 要求: 1.使页面某一区域始终显示在页面的最顶端2.页面流畅不卡顿 初始效果如图: 最终效果: 1.w...
      99+
      2024-04-02
    • 如何通过Jetpack Compose实现双击点赞动画效果
      这篇文章主要介绍如何通过Jetpack Compose实现双击点赞动画效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现步骤先红色画个爱心Icon(    Ico...
      99+
      2023-06-28
    • Android Studio如何实现下拉列表效果
      这篇文章主要讲解了“Android Studio如何实现下拉列表效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android Studio如何实现下拉列表效果”吧!题...
      99+
      2023-06-30
    • 利用Jetpack Compose实现绘制五角星效果
      目录说明自定义星行Modifier原理实现代码最终实现效果说明 compose中我们的所有ui操作,包括一些行为,例如:点击、手势等都需要使用Modifier来进行操作。因此对Mod...
      99+
      2024-04-02
    • 微信小程序实现吸顶盒效果
      本文实例为大家分享了微信小程序实现吸顶盒效果的具体代码,供大家参考,具体内容如下 html部分  <!-- 列表 -->     <view class="pa...
      99+
      2024-04-02
    • 微信小程序实现简单吸顶效果
      本文实例为大家分享了微信小程序实现吸顶效果的具体代码,供大家参考,具体内容如下 吸顶效果思路: 1.首先获取 Tab 栏与顶部的距离; 2.监听页面滚动事件 onPageScroll...
      99+
      2024-04-02
    • AndroidRecyclerView实现吸顶动态效果流程分析
      目录一、ItemDecoration二、实现RecyclerView吸顶效果1、实现一个简单的RecyclerView2、通过ItemDecoration画分割线3、画出每个分组的组...
      99+
      2022-12-22
      Android RecyclerView吸顶效果 Android RecyclerView
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作