gpt4 book ai didi

android - 修改 Jetpack Compose 中 IconButton 的波纹颜色

转载 作者:行者123 更新时间:2023-12-04 11:38:13 25 4
gpt4 key购买 nike

如何更改 IconButton 的波纹颜色?
我试过这样做,但它没有改变:

IconButton(
onClick = { onClick() },
modifier = Modifier.clickable(
onClick = { onClick() },
indication = rememberRipple(color = MyCustomTheme.colors.primary),
interactionSource = remember { MutableInteractionSource() },
)
)

最佳答案

我不知道您是否找到了使其适用于整个应用程序的方法,但我找到了一种方法。所以我发布这个以防其他人有类似的问题。
您可以设置自定义RippleTheme Gabriele Mariotti 的回答所描述的对象,那么您可以通过 CompositionLocalProvider()作为 MaterialTheme 中的内容。来自应用程序 theme 的内容然后可以设置为 CompositionalLocalProvider() 的内容.
看看这里:

private object JetNewsRippleTheme : RippleTheme {
// Here you should return the ripple color you want
// and not use the defaultRippleColor extension on RippleTheme.
// Using that will override the ripple color set in DarkMode
// or when you set light parameter to false
@Composable
override fun defaultColor(): Color = MaterialTheme.colors.primary

@Composable
override fun rippleAlpha(): RippleAlpha = RippleTheme.defaultRippleAlpha(
Color.Black,
lightTheme = !isSystemInDarkTheme()
)
}
那么对于您的应用主题,它应该是:
@Composable
fun JetNewsTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
MaterialTheme(
colors = if (darkTheme) DarkColors else LightColors,
typography = JetNewsTypography,
shapes = JetNewsShapes
) {
CompositionLocalProvider(
LocalRippleTheme provides JetNewsRippleTheme,
content = content
)
}
}
除非您明确设置另一个 RippleTheme,否则此方法应适用于整个应用程序直接到 AppTheme 下面的 Composables等级制度。并且与其他类型的 ComposableLocalProvider不冲突您可以直接设置为其他 Composables 的值.

关于android - 修改 Jetpack Compose 中 IconButton 的波纹颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67265345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com