在 Android 中,您可以从 getTheme()
以 Resource.Theme
对象的形式获取 Activity 的当前主题。此外,您可以通过其他主题的资源 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)) {
...
}
关于Android:如何获取当前主题的资源ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7267852/