如何在 Jetpack Compose 视图上禁用波纹效果?

4
Jetpack Compose 中,如何在点击项目时删除(或更改形状)涟漪效果?
这是使用 NavigationBarMaterial Design 3 的示例。
var selectedItem by remember { mutableStateOf(0) }
val items = listOf("Songs", "Artists", "Playlists")

NavigationBar {
    items.forEachIndexed { index, item ->
        NavigationBarItem(
            icon = { Icon(Icons.Filled.Favorite, contentDescription = null) },
            label = { Text(item) },
            selected = selectedItem == index,
            onClick = { selectedItem = index }
        )
    }
}

尝试添加一个带有Modifier的内容
modifier = Modifier.clickable(interactionSource = interactionSource,indication = null){}

无论是在NavigationBar上还是在NavigationBarItem上,都不起作用。
1个回答

12
你可以通过提供LocalRippleTheme来实现。在CompositionLocalProvider content内的所有视图将没有涟漪效果。
CompositionLocalProvider(
    LocalRippleTheme provides ClearRippleTheme
) {
    NavigationBar {
        items.forEachIndexed { index, item ->
            NavigationBarItem(
                icon = { Icon(Icons.Filled.Favorite, contentDescription = null) },
                label = { Text(item) },
                selected = selectedItem == index,
                onClick = { selectedItem = index }
            )
        }
    }
}

ClearRippleTheme清除水波主题:

object ClearRippleTheme : RippleTheme {
    @Composable
    override fun defaultColor(): Color = Color.Transparent

    @Composable
    override fun rippleAlpha() = RippleAlpha(
        draggedAlpha = 0.0f,
        focusedAlpha = 0.0f,
        hoveredAlpha = 0.0f,
        pressedAlpha = 0.0f,
    )
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接