设置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
相关产品推荐
相关产品推荐

