Jetpack Compose中如何禁用IconButton点击时的波纹效果
有两种常用方法可以实现这个需求,你可以根据对交互反馈的需求选择:
方法一:完全禁用所有交互相关视觉反馈
通过创建空的MutableInteractionSource,让IconButton无法感知交互状态,从而彻底移除波纹及其他交互反馈:
val noRippleInteractionSource = remember { MutableInteractionSource() } IconButton( onClick = {}, interactionSource = noRippleInteractionSource, // 显式指定内容颜色,避免无交互源导致的颜色异常 contentColor = MaterialTheme.colorScheme.onSurface ) { Icon(Icons.Default.Favorite, contentDescription = "示例图标") }
方法二:仅禁用波纹,保留其他交互反馈
如果只想去掉波纹效果,但保留按压时的颜色变化等其他交互反馈,可根据使用的Compose版本设置ripple参数:
Material 2 示例
IconButton( onClick = {}, ripple = null ) { Icon(Icons.Default.Favorite, contentDescription = "示例图标") }
Material 3 示例
IconButton( onClick = {}, ripple = RippleThemeDefaults.noRipple() ) { Icon(Icons.Default.Favorite, contentDescription = "示例图标") }
内容的提问来源于stack exchange,提问作者Kawan MC
相关产品推荐
相关产品推荐

