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

Android中如何通过.setBackgroundColor()引用values/colors.xml中的颜色?

解决Android中setBackgroundColor引用XML颜色资源的问题

嘿,我太懂你遇到的这个小坑了!你直接传R.color.white的时候,其实传的是一个资源ID(整数),但setBackgroundColor()方法需要的是实际解析后的颜色值(比如0xFFFFFFFF这种十六进制的颜色编码),这就是Android Studio给你弹警告的原因。

给你几个靠谱的解决方案,分情况来看:

  • 兼容所有Android版本的推荐写法:用ContextCompat.getColor()方法,它会自动处理不同API版本的兼容问题,不用你自己判断版本。
    如果是在Activity里,直接这么写:

    title.setBackgroundColor(ContextCompat.getColor(this, R.color.white));
    

    如果是在Fragment里,记得传上下文:

    title.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.white));
    
  • API 23以下的旧写法(不推荐,已弃用):在API 23之前,我们会用getResources().getColor(),但这个方法在Android 6.0之后被标记为弃用了,所以还是优先用上面的兼容方法更稳妥。

    title.setBackgroundColor(getResources().getColor(R.color.white));
    

简单说下为啥直接传R.color不行:R.color.white只是系统给这个颜色资源分配的一个整数ID,不是颜色本身的数值。你要是硬传这个ID,系统会把它当成颜色值来解析,结果大概率是个完全不对的奇怪颜色,根本不是你定义的白色~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:37:41