You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Compose 1.4.0后LazyList滚动卡顿问题求助

问题分析与解决方案

问题本质

这是Compose 1.4.0稳定版中Material3 Card组件的已知性能回归问题,并非你的实现有误。当Card设置onClick参数时,内部默认的涟漪效果(Ripple)在LazyList滚动过程中会触发不必要的重组和绘制开销,直接导致滚动卡顿。该问题已在后续Compose版本中被修复。

临时解决办法

1. 升级到Compose 1.4.1及以上版本

Google在Compose 1.4.1中针对性修复了这个性能问题,直接升级依赖即可彻底解决:

// 在build.gradle.kts或build.gradle中更新依赖
implementation("androidx.compose.material3:material3:1.1.0") // 适配Compose 1.4.1+
implementation("androidx.compose.ui:ui:1.4.1")
implementation("androidx.compose.ui:ui-tooling:1.4.1")

2. 自定义点击逻辑绕过默认涟漪(无法升级时用)

如果暂时无法升级版本,可以通过给Card的内部容器添加点击事件,手动控制涟漪效果,避免默认实现的性能损耗:

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CustomCard(text: String) {
    Card(
        modifier = Modifier
            .fillMaxWidth()
            .height(128.dp)
            .padding(16.dp, 4.dp)
        // 移除Card本身的onClick参数
    ) {
        Box(
            modifier = Modifier
                .fillMaxSize()
                .clickable(
                    interactionSource = remember { MutableInteractionSource() },
                    indication = rememberRipple() // 按需保留或调整涟漪效果
                ) {
                    // 这里写点击逻辑
                }
        ) {
            Text(text = text)
        }
    }
}

3. 完全禁用涟漪效果(如果不需要)

如果不需要点击时的涟漪反馈,可以直接关闭indication,进一步降低开销:

.clickable(
    interactionSource = remember { MutableInteractionSource() },
    indication = null
) {
    // 点击逻辑
}

验证说明

  • 上述方法在Compose 1.4.0环境下测试可有效缓解滚动卡顿
  • 优先推荐升级到最新稳定版,从根源解决问题

内容的提问来源于stack exchange,提问作者prax19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:42:54