【问题标题】:Why don't Indication work for Button or Icons?为什么指示不适用于按钮或图标?
【发布时间】:2022-11-22 10:57:03
【问题描述】:

作为solved here,我通过将indication 设置为null 来禁用水龙头闪烁。

但是,这不适用于按钮或图标?!

【问题讨论】:

    标签: android android-jetpack-compose android-jetpack android-compose-button


    【解决方案1】:

    Button 中,您不能在 clickable 修饰符中使用 indication=null,因为它是由使用 indication = rememberRipple() 的组件在内部定义的。这将使用 RippleTheme 提供的值创建并记住 Ripple

    您可以提供自定义LocalRippleTheme覆盖默认行为。

    就像是:

    CompositionLocalProvider(LocalRippleTheme provides NoRippleTheme) {
        Button(
            onClick = { /*...*/ },
        ) {
           //...
        }
    }
    

    和:

    private object NoRippleTheme : RippleTheme {
        @Composable
        override fun defaultColor() = Color.Unspecified
    
        @Composable
        override fun rippleAlpha(): RippleAlpha = RippleAlpha(0.0f,0.0f,0.0f,0.0f)
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用

      Modifier.pointerInput(Unit) {
          detectTapGestures(
              onPress = { /* Called when the gesture starts */ },
              onDoubleTap = { /* Called on Double Tap */ },
              onLongPress = { /* Called on Long Press */ },
              onTap = { /* Called on Tap */ }
          )
      }
      

      而不是onClick()。点击按钮时不会显示波浪效果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-02
        • 1970-01-01
        • 2019-08-20
        • 2021-06-10
        相关资源
        最近更新 更多