我知道有在styles.xml定义设置主题和使用它像如何从android中的另一个应用程序资源更改主题?
setTheme(android.R.style.MyTheme);
不过,我想从另一个应用程序,我开发以及获得主题的方式。我知道资源名称,实际上我能够使用此代码块获取主题ID;
Resources res = getPackageManager().getResourcesForApplication("com.example.theme");
int resThemeId = res.getIdentifier("my_theme","style","com.example.theme");
当我调试时,我看到resThemeId不是零。
然后,我需要最后的命令来设置这个主题。 super.onCreate()函数之前,我尝试实施这种方法,但现在看来,这是行不通的
setTheme(resThemeId);
但不是这个,如果我写下面的语句,我工作得很好
setTheme(android.R.style.Theme_Holo_Light);
所以,我该怎么做才能使用来自不同包资源的主题?
您可以从另一个软件包获取资源ID,但这些资源在您的APK中不存在。使用'PackageManager#getResourcesForApplication(String packageName)'加载资源应该适用于drawables,strings,bools等。但是,我不相信这是可能的,绝对不推荐加载其他APK的主题。 –
虽然我可以从其他软件包资源中获取绘图,字符串,布尔值,但我希望获得主题。为什么不可能? – Berkay92
这是可能的(见我的答案)。您需要重写getResrouces以返回其他应用程序的资源,以便可以应用该主题。这也将返回来自其他应用程序的所有字符串,布局,绘图和其他资源,因此,不建议这样做。 –