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

Android Color返回负值:R.color.red(#FF0000)调用后返回-65536如何解决?

你的颜色值其实没毛病!

嘿,别担心,ContextCompat.getColor返回的-65536完全是正常现象,不是bug!让我给你拆解清楚:

  • 本质原因:Android里的颜色是用32位有符号整数存储的,格式是ARGB(Alpha-红-绿-蓝)。你定义的#FF0000是RGB格式,系统会自动给它补全Alpha通道为FF(完全不透明),所以对应的十六进制完整值是0xFFFF0000。把这个十六进制数转成有符号十进制,结果就是-65536——这只是数值的不同表示形式,和你定义的红色完全一致!
  • 如果需要查看十六进制格式:要是你想把返回的int值转回熟悉的十六进制字符串,可以用这段代码:
    int colorInt = ContextCompat.getColor(this, R.color.red);
    String hexColor = String.format("#%08X", colorInt);
    // 输出结果就是 #FFFF0000,和你定义的颜色本质相同
    
  • 正常使用无需处理:如果你只是要把这个颜色值设置给View的背景、文字颜色等UI元素,直接用这个int值就行,Android的所有UI组件都能正确识别它对应的红色,完全不影响使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:24:59