【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)
                    )
                }
            }
        }
    }

运行效果

相关推荐
m0_748229995 小时前
Vue2 vs Vue3:核心差异全解析
前端·javascript·vue.js
C澒6 小时前
前端监控系统的最佳实践
前端·安全·运维开发
xiaoxue..6 小时前
React 手写实现的 KeepAlive 组件
前端·javascript·react.js·面试
hhy_smile6 小时前
Class in Python
java·前端·python
小邓吖6 小时前
自己做了一个工具网站
前端·分布式·后端·中间件·架构·golang
南风知我意9576 小时前
【前端面试2】基础面试(杂项)
前端·面试·职场和发展
优雅的潮叭7 小时前
cud编程之 reduce
android·redis·缓存
LJianK17 小时前
BUG: Uncaught Error: [DecimalError] Invalid argument: .0
前端
2601_949613027 小时前
flutter_for_openharmony家庭药箱管理app实战+用药知识详情实现
android·javascript·flutter
No Silver Bullet7 小时前
Nginx 内存不足对Web 应用的影响分析
运维·前端·nginx