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

小米设备Android应用颜色显示异常问题求助

Android应用仅小米设备颜色显示异常问题

我的Android应用在小米设备上颜色显示不符合预期,三星设备及模拟器均无此问题。相关代码如下:

初始化代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO);
}

主题样式(res/values/styles.xml)

<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="MeuTema" parent="Theme.AppCompat.Light">
        <item name="colorPrimaryDark">@color/encarnado</item>
        <item name="colorPrimary">@color/verde</item>
        <item name="windowActionBarOverlay">false</item>
        <item name="android:forceDarkAllowed">false</item>
    </style>
</resources>

异常代码:文本颜色未按预期显示

holder.valueTextView.setTextColor(ContextCompat.getColor(holder.valueTextView.getContext(), R.color.colorPrimaryDark));
if (valorAtual > valorSalvo) {
    holder.valueTextView.setTextColor(ContextCompat.getColor(holder.valueTextView.getContext(), R.color.verde));
} else if (valorAtual < valorSalvo) {
    holder.valueTextView.setTextColor(ContextCompat.getColor(holder.valueTextView.getContext(), R.color.encarnado));
}

针对性解决建议

  • 排查MIUI系统级颜色适配:小米MIUI自带「深色模式自动适配」「色彩风格调整」等功能,即便代码中锁定了浅色模式,部分版本仍会强制修改应用内颜色。可先在设备设置中关闭该应用的深色模式适配,验证是否解决问题。
  • 替换颜色获取方式:改用AppCompatResources.getColor()替代ContextCompat.getColor(),它对AppCompat主题的兼容性更好,能规避部分厂商的主题篡改逻辑:
    holder.valueTextView.setTextColor(AppCompatResources.getColor(holder.valueTextView.getContext(), R.color.colorPrimaryDark));
    if (valorAtual > valorSalvo) {
        holder.valueTextView.setTextColor(AppCompatResources.getColor(holder.valueTextView.getContext(), R.color.verde));
    } else if (valorAtual < valorSalvo) {
        holder.valueTextView.setTextColor(AppCompatResources.getColor(holder.valueTextView.getContext(), R.color.encarnado));
    }
    
  • 直接使用十六进制颜色值:如果上述方法无效,可绕过颜色资源引用,直接在代码中写入目标颜色的十六进制值(如0xFF00FF00代表绿色),避免系统对资源颜色的修改。
  • 强化主题锁定:在AndroidManifest.xml的<application>标签中明确指定主题,并添加元数据确保主题生效:
    <application
        ...
        android:theme="@style/MeuTema">
        <meta-data
            android:name="android.app.theme"
            android:resource="@style/MeuTema" />
    </application>
    

内容的提问来源于stack exchange,提问作者João Marques

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:33:18