Jetpack Compose中IconButton波纹颜色无效及透明度调整咨询
问题原因
你当前代码的问题在于将indication添加到了modifier上,而IconButton内部自带默认的交互反馈逻辑,且使用了独立的InteractionSource,导致外部设置的波纹无法被触发。
正确修改波纹颜色的写法
需要将interactionSource和indication直接作为IconButton的参数传入,替换其默认的波纹效果:
val interactionSource = remember { MutableInteractionSource() } IconButton( interactionSource = interactionSource, indication = rememberRipple( bounded = false, radius = 30.dp, color = colorResource(id = R.color.error_red) ), modifier = modifier .background(colorResource(id = R.color.white), shape = CircleShape), onClick = { onButtonPressed() } ) { Icon( painter = painterResource(R.drawable.ic_busy_small_busy), contentDescription = buttonContentDesc, ) }
调整波纹透明度的方法
有两种简单方式可以调整波纹的透明度:
- 通过颜色的alpha属性:对目标颜色调用
copy(alpha = ...)方法,alpha取值范围为0f(完全透明)到1f(完全不透明),示例:color = colorResource(id = R.color.error_red).copy(alpha = 0.5f) - 直接使用带alpha的颜色值:如果是用
Color类定义颜色,可以直接传入包含alpha通道的十六进制值,前两位为alpha(范围00到FF),示例:color = Color(0x80FF0000) // 这里0x80对应50%透明度
内容的提问来源于stack exchange,提问作者Nik
相关产品推荐
相关产品推荐

