我需要获取颜色的字符串值。换句话说,我想从字符串格式的
#ffffffff
等颜色资源中提取 <color name="color">#ffffffff</color>
。有什么办法可以做到这一点吗?
假设你有:
<color name="green">#0000ff00</color>
这是代码:
int greenColor = getResources().getColor(R.color.green);
String strGreenColor = "#"+Integer.toHexString(greenColor);
如果您只需要十六进制值(不带 alpha):
int intColor = getResources().getColor(R.color.your_color);
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
您将无法提取 XML 的原始源文本。它在构建时转换为二进制值。 (例如,
#fff
和 #ffffffff
之间的差异被删除了。)
当然,您可以使用
Integer.toHexString(int)
将颜色值转换为十六进制字符串。
Integer.toHexString(ContextCompat.getColor(context, R.color.black) & 0x00ffffff);
int colorResInt = getResources().getColor(R.color.your_color);
String colorHex = String.format("#%06X", 0xFFFFFF & colorInt)
这也将处理 alpha 值