2014-01-05 88 views
0

我以前在Android中看到過這一點,所以我知道這是可能的。我想添加一個使用listPreference更改應用程序主題的首選項。我一直在擺弄一些XML代碼,但是我被困在Java部分。在Android中以編程方式設置主題

這裏是我的settings.xml文件的listPreference:

<ListPreference 
     android:entries="@array/Theme" 
     android:entryValues="@array/themeAlias" 
     android:key="theme_chooser" 
     android:title="Theme" 
     android:summary="Change the theme of the main activity." /> 

這裏是我的array.xml文件我的字符串數組:

<string-array name="Theme"> 
     <item>Default Theme</item> 
     <item>Holo Light</item> 
</string-array> 
<string-array name="themeAlias"> 
     <item>"default"</item> 
     <item>"light"</item> 
</string-array> 

現在這裏是一些僞代碼,我不要不知道如何寫入實際代碼:

Find the listPreference 
    if preference is equal to default 
     set the main activity's theme to custom a theme 
    else 
     set the theme to a standard light theme 

我已經完成了大約20次Google搜索我得到的是一堆主題應用和博客文章,講述如何像老闆一樣主題安卓手機......我想讓用戶像老闆一樣主題我的應用程序!

由於提前,

安德魯

回答

1

看看這個answer其中建議設置主題爲基礎的活動,這是你所有的應用程序的活動延長。

+0

我不確定我明白答案的意思。我一直坐在這裏約2個小時搞亂了不同的代碼,沒有任何工作。你能解釋他的答案嗎?我已經覆蓋了onCreate(),我試圖做的是根據用戶在列表首選項中選擇的內容設置主要活動的主題。 –

+0

除了擴展Activity之外,您的MainActivity和應用程序中的每個活動都應擴展MyBaseActivity,您自己的自定義活動。在該活動的onCreate中,用用戶選擇的主題調用setTheme。 –

+0

好吧,我建立了新的活動[這裏](http://pastebin.com/vpnnWjVt)。並改變了[this]這樣的主要活動(http://pastebin.com/p2cFSDsX)。 現在,當我運行它時,它將主題設置爲Holo Light,當我進入其中時,它什麼也不做。解? –

相關問題