Android Studio中如何用Java代码读取Style Item的十六进制值
读取Android Style中colorForeground的十六进制值
要读取style.xml里Theme.MyTheme中android:colorForeground对应的十六进制颜色值,需要分两步:先获取该属性对应的实际颜色整数值,再将其转换为十六进制字符串。
步骤1:通过TypedArray获取颜色整数值
在Context(比如Activity)中,利用obtainStyledAttributes方法从指定主题中提取属性值:
// 获取TypedArray,传入目标主题和要获取的属性数组 TypedArray typedArray = obtainStyledAttributes(R.style.Theme_MyTheme, new int[]{android.R.attr.colorForeground}); // 提取颜色值,第二个参数为默认颜色(这里用透明色) int colorValue = typedArray.getColor(0, android.graphics.Color.TRANSPARENT); // 必须回收TypedArray,避免内存泄漏 typedArray.recycle();
步骤2:将颜色整数值转为十六进制字符串
把获取到的int类型颜色值格式化为十六进制字符串:
// 不带Alpha通道的6位格式 String hexColor = String.format("#%06X", (0xFFFFFF & colorValue)); // 带Alpha通道的8位格式(包含透明度信息) String hexColorWithAlpha = String.format("#%08X", colorValue);
说明
R.style.Theme_MyTheme对应你定义的主题名称,注意用下划线替代原XML中的点号android.R.attr.colorForeground是系统定义的属性ID,对应XML里的android:colorForeground@color/purple_200会被系统解析为具体的颜色整数值,通过上述方式能直接拿到实际颜色值,再转成十六进制即可
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

