为什么指示不适用于按钮或图标?

问题描述 投票:0回答:2

在这里解决,我通过将

indication
设置为
null
来禁用水龙头闪烁。

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

android android-jetpack-compose android-jetpack android-compose-button android-jetpack-compose-button
2个回答
6
投票

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

您可以提供自定义

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)
}

0
投票

你可以使用

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()
。点击按钮时不会显示波浪效果。

© www.soinside.com 2019 - 2024. All rights reserved.