在 Android 中,您可以获取 Activity 的当前主题Resource.Theme
对象来自getTheme()
。另外,您可以通过其他主题的资源 ID 将主题设置为不同的主题,如下所示setTheme(R.style.Theme_MyTheme)
.
但我如何知道它是否值得——当前主题是否已经是我想要设置的主题?我正在寻找类似的东西getTheme().getResourceId()
,以便编写如下内容:
protected void onResume() {
int newThemeId = loadNewTheme();
if (newThemeId != getTheme().getResourceId()) { // !!!! How to do this?
setTheme(newThemeId);
// and rebuild the gui, which is expensive
}
}
有任何想法吗?
我找到了一种无需获取资源 id 即可解决需求的方法。
我使用字符串名称向每个主题添加一个项目:
<item name="themeName">dark</item>
在代码中我检查名称,如下所示:
TypedValue outValue = new TypedValue();
getTheme().resolveAttribute(R.attr.themeName, outValue, true);
if ("dark".equals(outValue.string)) {
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)