Я заметил, что всякий раз, когда вы меняете цвет кнопки в Jetpack Compose, это будет иметь незаметный волновой эффект.
Я хотел бы иметь возможность сохранить эффект серой ряби по умолчанию и просто наложить его на цвет кнопки по своему выбору.
Например:
Button(
colors = ButtonDefaults.buttonColors(containerColor = Color.Red),
onClick = { }
)
В тот момент, когда вы меняете цвет, ваша кнопка не имеет волнистого эффекта по умолчанию, наблюдаемого на большинстве компонентов.
Чтобы быть ясным, у него есть какая-то рябь, но она не заметна.
Похоже, что есть какой-то код более низкого уровня, вызывающий Modifier.clickable
для Surface
, у которого есть какой-то параметр indication
или что-то, что влияет на цвет ряби?
Можно ли просто изменить цвет кнопки, но оставить пульсацию по умолчанию?
Цвет ряби определяется LocalRippleTheme
.
Если вы хотите указать собственный цвет, вы можете использовать:
CompositionLocalProvider(LocalRippleTheme provides MyRippleTheme ) {
Button(
colors = ButtonDefaults.buttonColors(containerColor = Color.Red),
onClick = { }
){}
}
с:
private object MyRippleTheme : RippleTheme {
@Composable
override fun defaultColor() = Color.Green
@Composable
override fun rippleAlpha(): RippleAlpha = RippleTheme.defaultRippleAlpha(
Color.Green,
lightTheme = true
)
}