为什么不能以编程方式解析此颜色:
style.xml的定义:
<style name="MyTheme.Light" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">#ff0000</item>
</style>
colors.xml的定义:
<color name="button_color">?attr/colorAccent</color>
来源:
getResources().getColor(R.color.button_color);
引发以下异常:
android.content.res.Resources$NotFoundException: Resource ID #0x7f07001b type #0x2 is not valid
at android.content.res.Resources.getColor(Resources.java:752)
...
答案 0 :(得分:2)
变化:
style.xml
:
<style name="MyTheme.Light" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/button_color</item>
</style>
colors.xml的定义:
<color name="button_color">#ff0000</color>
来源:
getResources().getColor(R.color.button_color);
答案 1 :(得分:0)
TypedValue typedValue = new TypedValue();
TypedArray typedArray = context.obtainStyledAttributes(typedValue.data, new int[] { android.R.attr.colorAccent });
int color = typedArray.getColor(0, 0);
这对我有用。您也许可以用颜色资源替换android.R.attr.colorAccent。