【Compose multiplatform教程14】【组件】LazyColumn组件

查看全部组件https://blog.csdn.net/b275518834/article/details/144751353

LazyColumn

功能说明:针对需要显示大量列表数据的情况进行优化,它会根据屏幕的可见区域动态地加载和显示内容,避免一次性加载所有数据,从而显著提高性能和内存使用效率,确保界面的流畅性和响应性。

示例场景:在社交媒体应用中,动态列表可能包含大量的帖子,使用 LazyColumn 可以让用户在滚动浏览时快速加载可见区域的内容;在新闻客户端,长长的新闻列表也能通过此组件高效展示。

垂直的列表:

Kotlin 复制代码
@Composable
    fun SimpleLazyRowExample() {
        LazyRow(
            modifier = Modifier
                .fillMaxWidth()
                .padding(16.dp)
        ) {
            val items = listOf("苹果", "香蕉", "橙子", "葡萄")
            items.forEach { item ->
                item {
                    Text(
                        text = item,
                        modifier = Modifier
                            .padding(horizontal = 8.dp)
                    )
                }
            }
        }
    }

运行效果;

垂直的列表

Kotlin 复制代码
@Composable
    fun SimpleLazyColumnExample() {
        LazyColumn(
            modifier = Modifier
                .fillMaxWidth()
                .padding(16.dp)
        ) {
            val items = listOf("苹果", "香蕉", "橙子", "葡萄")
            items.forEach { item ->
                item {
                    Text(
                        text = item,
                        modifier = Modifier
                            .fillMaxWidth()
                            .padding(vertical = 8.dp)
                    )
                }
            }
        }
    }

运行效果;

Grid网格效果

Kotlin 复制代码
 @Composable
    fun GridViewLikeLazyColumnExample() {
        LazyVerticalGrid(
            columns = GridCells.Fixed(3), // 设置为3列
            contentPadding = PaddingValues(16.dp), // 内容的内边距
            verticalArrangement = Arrangement.spacedBy(8.dp), // 垂直方向上列表项的间距
            horizontalArrangement = Arrangement.spacedBy(8.dp) // 水平方向上列表项的间距
        ) {
            val items = listOf("苹果", "香蕉", "橙子", "葡萄", "芒果", "草莓", "西瓜", "菠萝")
            items.forEach { item ->
                item {
                    Text(
                        text = item,
                        modifier = Modifier
                            .fillMaxSize()
                            .padding(8.dp)
                    )
                }
            }
        }
    }

运行效果

相关推荐
万少1 小时前
使用Trae轻松安装openclaw的教程-附带免费token
前端·openai·ai编程
浪浪山_大橙子1 小时前
OpenClaw 十分钟快速,安装与接入完全指南 - 推荐使用trae 官方 skills 安装
前端·人工智能
忆江南1 小时前
iOS 可视化埋点与无痕埋点详解
前端
离开地球表面_991 小时前
金三银四程序员跳槽指南:从简历到面试再到 Offer 的全流程准备
前端·后端·面试
_柳青杨2 小时前
跨域获取 iframe 选中文本?自己写个代理中间层,再也不求后端!
前端
比尔盖茨的大脑2 小时前
事件循环底层原理:从 V8 引擎到浏览器实现
前端·javascript·面试
天才熊猫君2 小时前
Vue3 命令式弹窗原理和 provide/inject 隔离机制详解
前端
bluceli2 小时前
Vue 3 Composition API深度解析:构建可复用逻辑的终极方案
前端·vue.js
程序员ys2 小时前
前端权限控制设计
前端·vue.js·react.js
忆江南2 小时前
Flutter GetX 深入浅出详解
前端