禁用 BottomNavigationItem 的涟漪效果

Ein*_*che 3 android-jetpack-navigation android-jetpack-compose

我的应用程序需要一个底部导航栏。显示我使用的项目BottomNavigationItem

BottomNavigation(
    ...
) {
    ...
    BottomNavigationItem(
        ...
        onClick = {onItemSelect(item)},
        ...
    )
}
Run Code Online (Sandbox Code Playgroud)

然而,这些会带来连锁反应,我想禁用它,尽管我不知道如何禁用。需要BottomNavigationItem该属性,因此不能选择onClick使用修饰符。.clickable()

编辑:

Gabriele Mariotti 的这个回答MutableInteractionSource建议将 a 传递给.clickable函数,以及nullfor indication。虽然BottomNavigationItem接受 a MutableInteractionSource,但它似乎不接受 an indication

Gab*_*tti 15

在这种情况下,您可以提供自定义LocalRippleTheme来覆盖默认行为。

就像是:

CompositionLocalProvider(LocalRippleTheme provides NoRippleTheme) {
    BottomNavigation {
            BottomNavigationItem(
              //...
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

private object NoRippleTheme : RippleTheme {
    @Composable
    override fun defaultColor() = Color.Unspecified

    @Composable
    override fun rippleAlpha(): RippleAlpha = RippleAlpha(0.0f,0.0f,0.0f,0.0f)
}
Run Code Online (Sandbox Code Playgroud)