我知道有在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以返回其他應用程序的資源,以便可以應用該主題。這也將返回來自其他應用程序的所有字符串,佈局,繪圖和其他資源,因此,不建議這樣做。 –