jetpack compose 中给定背景错误的“on”颜色冲突

Rac*_*eyT 11 kotlin android-jetpack-compose

我正在使用 jetpack compose 为我的应用程序制作一个主题,我有这个:

@Composable
fun MyTheme(content: @Composable () -> Unit) {

    val colors = lightColors(
        primary = CustomColors.Custom1,
        primaryVariant = CustomColors.Custom2,
        onPrimary = Color.White,
        background = Color.White,
        secondary = CustomColors.Custom2
        )
    MaterialTheme(colors = colors, content = content)

}

object CustomColors{

    val Custom1 = Color(0xEF119335)
    val Custom2= Color(0xAA892335)

}
Run Code Online (Sandbox Code Playgroud)

问题是,当我添加时secondary = CustomColors.Custom2,我收到错误onPrimary = Color.White。错误是这样的:

给定背景错误的“开启”颜色冲突

Phi*_*hov 14

Compose源代码中的错误描述

具有相同值的背景颜色应具有相同的“on”颜色

在材质颜色系统中,背景颜色具有相应的“on”颜色,用于组件内的内容颜色。例如,彩色按钮primary将包含onPrimary文本。因此,重要的是onColor给定的颜色值只有一种可能,否则无法知道组件内应使用哪种“on”颜色。要解决此问题,可以对相同的背景颜色使用相同的“on”颜色,或者对每个“on”颜色使用不同的背景颜色。

在您的情况下,您同时拥有primaryVariantsecondary设置为CustomColors.Custom2,这意味着相应的背景颜色也应该相同。

默认onSecondary颜色是Color.Black,并且onPrimary您已经指定了Color.White,这就是编译器不高兴的原因。

您可以通过为和指定onSecondary = Color.White或选择不同的颜色来解决此问题。primaryVariantsecondary

如果在这个解释之后您仍然想使用这些确切的颜色,您可以使用@SuppressLint("ConflictingOnColor"): 来静音此警告,但某些系统或材质元素可能看起来不太好。