Android:如何获取当前主题的资源ID?

标签 android

在 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/

相关文章:

android - 使用 fragment Activity 创建的 ADT 空白 Activity

android - 更改视频聊天帧率 tokbox

javascript - 从 meteor 和 Cordova 上传视频

android - 如何在 Xamarin 小部件中使用自定义行创建 ListView

android - cocos2d-x Android构建失败

java - Android url.openstream() 抛出 fileNotFound

android自定义 map 标记边界

android - 抽屉导航的背景图像尺寸(配置文件部分 - 第一行)

java - 使用 Gson 序列化具有非原始值的对象的 ArrayList?

java - 如何在 android 上使用 java 8 库?