【发布时间】:2016-03-07 06:55:39
【问题描述】:
我一直在用一种方法从当前Context获取颜色属性:
public static int getColorAttribute(Context context, @AttrRes int attr) {
final TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(attr, value, true);
return value.data;
}
它运行良好,但是当我尝试在扩展 Application 的类中使用它时,它返回 0。在大多数情况下,我会这样调用该方法:
int colorAccent = Util.getColorAttribute(this, R.attr.colorAccent);
这将返回我在 themes.xml 中设置的 "colorAccent" 作为我在 Manifest 中的 AppTheme。但是在Application 类中,我不得不调用getApplicationContext() 而不是this。因此,我也将Activity 中该方法的其他实例之一切换为getApplicationContext(),并返回0。我还尝试了getApplication() 和getBaseContext(),结果相同。
我想知道是否有办法从 Application 类中的应用程序主题中获取颜色。或者如果不是,为什么getApplicationContext().getTheme() 似乎没有返回应用程序主题。
【问题讨论】:
标签: java android android-theme android-styles android-attributes