Bry*_*yan 2 java android android-theme android-styles android-attributes
我一直在使用一种方法从当前获取颜色属性Context
:
public static int getColorAttribute(Context context, @AttrRes int attr) {
final TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(attr, value, true);
return value.data;
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是当我尝试在扩展Application
它的类中使用它时,它返回0
. 在大多数情况下,我会像这样调用方法:
int colorAccent = Util.getColorAttribute(this, R.attr.colorAccent);
Run Code Online (Sandbox Code Playgroud)
这将返回"colorAccent"
我集themes.xml
作为我AppTheme
在我的清单。但是在Application
课堂上我不得不调用getApplicationContext()
而不是this
. 因此,我也将方法的其他实例之一切换到了Activity
togetApplicationContext()
中,它返回了0
. 我也尝试过getApplication()
,getBaseContext()
结果相同。
我想知道是否有办法从类中的应用程序主题中获取颜色Application
。或者如果没有,为什么getApplicationContext().getTheme()
似乎没有返回应用程序主题。
您可以尝试自己设置主题吗?
getApplicationContext().getTheme().applyStyle(R.style.someTheme, true);
Run Code Online (Sandbox Code Playgroud)
然后在样式中有你的主题,它是你在android中想要的某个主题的子主题。此外,由于主题旨在从活动上下文中访问,因此该方法不应该被拒绝。UI 任务的应用程序上下文不完整。
归档时间: |
|
查看次数: |
1782 次 |
最近记录: |