You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose配置主题时报Conflicting 'on' color错误如何解决

问题产生原因
  • Jetpack Compose Material 主题内置了可访问性校验规则,会自动检查所有容器色与其对应前景(on)色的对比度是否符合Material设计规范,对比度不达标就会抛出该错误。
  • 你的代码里primaryVariant赋值为CustomColors.Custom2(色值0xAA892335),而primary色系的统一前景色为onPrimary = Color.White,经计算Custom2与白色的对比度未达到规范要求的最小阈值。
  • 新增secondary = CustomColors.Custom2配置后触发了全量的主题颜色合法性校验,因此暴露了之前未触发的对比度冲突问题。同时你未显式指定onSecondary参数,lightColors默认使用黑色作为onSecondary,Custom2与黑色的对比度同样不满足要求,也会触发该报错。
解决方法
  • 方案1:显式指定所有on系列颜色,避免依赖默认值
    补充lightColors配置中缺失的onSecondary等参数,为Custom2搭配对比度达标的前景色,示例代码如下:
    val colors = lightColors(
        primary = CustomColors.Custom1,
        primaryVariant = CustomColors.Custom2,
        onPrimary = Color.White,
        background = Color.White,
        onBackground = Color.Black,
        secondary = CustomColors.Custom2,
        onSecondary = Color.White // 为Custom2指定白色作为前景,满足对比度要求
    )
    
  • 方案2:调整色值保证对比度
    修改CustomColors.Custom2的色值,遵循深色容器配浅前景、浅色容器配深前景的原则,让它和对应的onPrimary、onSecondary颜色的对比度都达到规范要求即可。
  • 方案3:临时压制校验(仅建议调试阶段使用)
    给lightColors函数添加@Suppress("MaterialDesignConflictingOnColor")注解,即可临时关闭该可访问性校验,避免报错。

内容的提问来源于stack exchange,提问作者RaceyT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:27:01