【问题标题】:Disable ripple effect of BottomNavigationItem禁用 BottomNavigationItem 的涟漪效应
【发布时间】:2021-10-12 15:25:57
【问题描述】:

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

BottomNavigation(
    ...
) {
    ...
    BottomNavigationItem(
        ...
        onClick = {onItemSelect(item)},
        ...
    )
}

但是,这些带有连锁反应,我想禁用,但我不知道如何禁用。 BottomNavigationItem 需要 onClick 属性,因此不能使用 .clickable() 修饰符。

编辑:

Gabriele Mariotti 的This answer 建议将MutableInteractionSource 传递给.clickable 函数,并将null 传递给indication。虽然BottomNavigationItem 接受MutableInteractionSource,但它似乎不接受indication

【问题讨论】:

  • 这是默认库吗?我没有找到文档。
  • @MARSK 我在android developer page 上找到了它。他们也使用了BottomNavItem

标签: android-jetpack-compose android-jetpack-navigation


【解决方案1】:

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

类似:

CompositionLocalProvider(LocalRippleTheme provides NoRippleTheme) {
    BottomNavigation {
            BottomNavigationItem(
              //...
            )
        }
    }
}

与:

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

    @Composable
    override fun rippleAlpha(): RippleAlpha = RippleAlpha(0.0f,0.0f,0.0f,0.0f)
}

【讨论】:

  • 这绝对比我发现的方式更优雅。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 2016-04-25
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多