【发布时间】:2016-11-26 15:13:57
【问题描述】:
我需要将颜色代码发送到后端服务器(转发到 iOS 客户端),但 ContextCompact.getColor(context, colorResourceId); 返回一个负值,其他客户端 (iOS) 无法识别。
这是资源十六进制值:
<color name="green">#1FAB06</color>
下面的这段代码给了我以下负整数值:-14701818
int color = ContextCompat.getColor(context, mResourceColor);
这个以十六进制转换的负值是:
1FAB06
如果我将此十六进制值转换为十进制,我会得到:2075398
public int getColorDecimal(Context context) {
int color = ContextCompat.getColor(context, mResourceColor);
String hexColor = String.format("%06X", (0xFFFFFF & color));
color = Integer.parseInt(hexColor, 16);
return color;
}
如果我将此正小数应用于视图,则会出现问题。 Android 无法识别此值。编辑文本保持白色。
mETName.setTextColor(getColorDecimal(context));
由于数据同步,客户端和 Web 服务应该(以某种方式)具有相同的值。
【问题讨论】:
-
为什么不将十六进制转换为 rgb 值呢?