2

我一直在使用一种方法从当前获取颜色属性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);

这将返回我在清单中"colorAccent"设置的内容。但是在课堂上我不得不打电话而不是. 因此,我也将方法的其他实例之一切换为to并返回。我也尝试过,结果相同。themes.xmlAppThemeApplicationgetApplicationContext()thisActivitygetApplicationContext()0getApplication()getBaseContext()

我想知道是否有办法从Application课堂上的应用程序主题中获取颜色。或者如果没有,为什么getApplicationContext().getTheme()似乎没有返回应用程序主题。

4

1 回答 1

7

你可以尝试自己设置主题吗?

getApplicationContext().getTheme().applyStyle(R.style.someTheme, true);

然后在样式中有你的主题是你在android中想要的某个主题的子主题。此外,应该不赞成这种方法,因为主题是要从活动上下文中访问的。UI 任务的应用程序上下文不完整。

于 2015-12-02T21:44:43.377 回答