在XML资源中,我可以使用这样的系统引用样式颜色(只是一个示例):
android:textColor="?android:itemTextColor">
我想知道如何以编程方式在java中获取该颜色,当我需要设置这样的颜色时(无关的另一个例子):
button.setBackgroundColor(myColor);
如何将myColor
设为?android:itemTextColor
?
答案 0 :(得分:1)
这样的事情有帮助吗?
TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(R.attr.textColorHint, typedValue, true);
button.setBackgroundColor(typedValue.data);
答案 1 :(得分:1)
您所看到的是一个属性,它是资源的参考(不一定是颜色)。属性由Theme
解析,这意味着可以根据解析后的Theme
将相同的属性解析为不同的值。
如果你在Acitivity
,你可以(也可能应该)使用Activity
的主题
val typedValue = TypedValue()
val found = theme.resolveAttribute(android.R.attr.textColorHint,typedValue, true)
之后,您应该检查您已解决的值的类型
when(typedValue.type){
TypedValue.TYPE_INT_COLOR_ARGB8 -> ...
TypedValue.TYPE_INT_COLOR_ARGB4 -> ...
...
}
然后你可以(最终)使用存储在typedValue.data