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

设置clickable为null仍有涟漪效果,如何禁用Image的点击功能

解决Compose Image组件条件禁用点击的问题

你当前的写法无法禁用点击,核心原因是:clickable修饰符一旦添加,组件就会拥有点击区域和涟漪效果,lambda里的if-else只是控制点击后执行的内容,返回null并不会取消点击能力。

下面是两种正确的实现方式:

方式一:条件添加clickable修饰符

只在需要可点击的时候才给组件加上clickable,否则跳过这个修饰符:

Image(
    painter = painterResource(id = R.drawable.ohme_logo_white),
    contentDescription = null,
    modifier = Modifier
        .fillMaxWidth(0.7F)
        .then(
            if (state.clickable) Modifier.clickable { onPressed() }
            else Modifier
        )
)

方式二:使用clickable的enabled参数(推荐)

clickable本身提供了enabled参数,直接用这个参数控制是否可点击,当enabled为false时,点击事件不会触发,同时也会自动移除涟漪效果:

Image(
    painter = painterResource(id = R.drawable.ohme_logo_white),
    contentDescription = null,
    modifier = Modifier
        .fillMaxWidth(0.7F)
        .clickable(enabled = state.clickable) { 
            onPressed() 
        }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:18:13