如何在 Jetpack Compose 中使文本静音/变灰?

How to do muted / grayed text in jetpack compose?

这似乎存在于大多数 UI 框架中,以一种适用于浅色和深色主题的方式,但在这里似乎不存在。

目前我做了:

val Muted = Color.LightGray

并将其导入其他地方,但在浅色主题上看起来很糟糕。

有什么想法吗?

Compose 具有 ContentAlpha.medium,顾名思义,用于将颜色显示为静音。

我不知道这是否是最有效的方法,但我通常这样使用它:

Text(
    text = myText,
    color = when {
        isEnabled -> MaterialTheme.colors.myColor
        else -> MaterialTheme.colors.myColor.copy(alpha = ContentAlpha.medium)
    }
)

您可以将其抽象为一个扩展字段并将其添加到您的主题文件中:

val Color.muted get() = this.copy(alpha = ContentAlpha.medium)

并像这样使用它:

color = when {
    isEnabled -> MaterialTheme.colors.myColor
    else -> MaterialTheme.colors.myColor.muted
  1. 使用背景颜色的 Color.luminance() 值并在动态主题的情况下选择文本的灰度颜色。

  2. 使用isSystemInDarkTheme()选择颜色结合contentColorFor(),当我们有固定的主题系统时,