如何在jetpack compose中将图标的颜色设置为[默认颜色]?

cai*_*cnb 6 android-jetpack-compose

图标有默认颜色,不同主题下颜色可能不同。

当满足条件时,我希望图标的颜色变成Color.RED,否则它使用默认颜色(例如,white在一个主题和yellow另一个主题上)

但我不知道如何设置的语法default color。请帮忙,非常感谢!

val judge = ... //a mutableStateOf Boolean
...
// how to set [default color]?
Icon(painterResource(R.drawable.ic_baseline_error_outline_24), 
    contentDescription = null, 
    tint = if (judge) Color.RED else [default color])
Run Code Online (Sandbox Code Playgroud)

War*_*Man 6

在 Compose Material 1.3.1 中,更改图标色调的源代码是:

val colorFilter = if (tint == Color.Unspecified) null else ColorFilter.tint(tint)

因此,只需将 Color.Unspecified 传递给图标的色调参数即可保持图标的默认色调颜色:

 Icon(
    painter = painterResource(id = R.drawable.your_icon),
    contentDescription = null,
    tint = Color.Unspecified
 )
Run Code Online (Sandbox Code Playgroud)


Mar*_*rat 3

如果您转到Icon文件,您会看到它的值:

tint: Color = LocalContentColor.current.copy(alpha = LocalContentAlpha.current)
Run Code Online (Sandbox Code Playgroud)

你重新设置一下就可以了