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
相关产品推荐
相关产品推荐

