考虑一下:
style.xml
<style name="BlueTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="theme_color">@color/theme_color_blue</item> </style>
attrs.xml
<attr name="theme_color" format="reference" />
color .xml
<color name="theme_color_blue">#ff0071d3</color>
所以 主题颜色 是由主题引用的。如何以编程方式获取 theme_color (参考)?通常我会使用getResources().getColor()但在这种情况下不会使用,因为它被引用了!
getResources().getColor()
这应该做的工作:
TypedValue typedValue = new TypedValue(); Theme theme = context.getTheme(); theme.resolveAttribute(R.attr.theme_color, typedValue, true); @ColorInt int color = typedValue.data;
还要确保在调用此代码之前将主题应用于您的活动。要么使用:
android:theme="@style/Theme.BlueTheme"
在您的清单或电话中(在您致电之前setContentView(int)):
setContentView(int)
setTheme(R.style.Theme_BlueTheme)
在onCreate().
onCreate()
我已经用您的价值观对其进行了测试,并且效果很好。