Bjö*_*hel 2 android android-resources
我需要从主题中提取默认值,但不能从当前主题中提取默认值。
我知道我可以像这样从当前主题获取属性:
TypedValue typedValue = new TypedValue();
Theme currentTheme = context.getTheme();
currentTheme.resolveAttribute(android.R.attr.windowBackground, typedValue, true);
// result is in: typedValue.data
Run Code Online (Sandbox Code Playgroud)
但我需要这样的东西:
Theme darkTheme = getTheme(R.style.AppTheme.Dark);
Run Code Online (Sandbox Code Playgroud)
...我只需要提取一个值,就不想更改当前主题。
看起来我们可以通过ContextThemeWrapper在基础周围创建一个带有所需主题的临时文件来做到这一点Context,尽管我相信任何可用的方法Context都可以,因为包装程序应该替换给定主题中存在的所有属性值。
Theme darkTheme = new ContextThemeWrapper(getBaseContext(), R.style.AppTheme_Dark).getTheme();
Run Code Online (Sandbox Code Playgroud)
另一种选择如下。这可能是更可取的,因为看起来好像a Theme没有保留对any的引用Context。
Theme darkTheme = getResources().newTheme();
darkTheme.applyStyle(R.style.AppTheme_Dark, true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |