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

Jetpack Compose中固定文本黑色不受深色模式影响失效问题

解决Compose文本深色模式下自动变白的问题

针对你遇到的问题——即使硬设了Color.Black,文本仍在深色模式下自动变白,给你几个实用的排查和解决办法:

1. 直接在Text组件显式设置颜色

Text组件的color参数优先级高于TextStyle中的配置,直接在这里设置能彻底覆盖主题或继承的颜色:

Text(
    style = profileItem,
    text = priceStyle(order.total!!),
    modifier = Modifier.padding(start = 2.dp),
    color = Color.Black // 强制指定颜色,优先级最高
)

2. 检查priceStyle函数的实现

如果priceStyle返回的是AnnotatedString,里面可能自带了跟随主题变化的颜色样式,会覆盖你设置的TextStyle。比如这种情况:

// 错误示例:依赖主题颜色,会随深色模式变化
fun priceStyle(total: Double): AnnotatedString {
    return buildAnnotatedString {
        append(total.toString())
        addStyle(SpanStyle(color = MaterialTheme.colorScheme.onSurface), 0, length)
    }
}

要改成固定颜色:

fun priceStyle(total: Double): AnnotatedString {
    return buildAnnotatedString {
        append(total.toString())
        addStyle(SpanStyle(color = Color.Black), 0, length)
    }
}

3. 排查系统辅助功能

部分手机的辅助功能里有颜色反转、高对比度文字等选项,开启后会强制反转文本颜色,和代码设置无关。去系统设置的「辅助功能」里检查并关闭这些选项试试。

4. 确认主题没有强制修改局部内容颜色

如果布局中使用了LocalContentColorProvider强制修改局部内容颜色,也会影响Text的显示。比如:

// 这种代码会强制子组件使用主题的onSurface颜色
CompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.onSurface) {
    // 你的Text在这里的话会受影响
}

如果有这类代码,要么删除,要么在Text里显式指定颜色覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:27:36