2017-07-05 60 views
0

我想在用戶在首選項文件或設置中選擇設置時更改清單樣式。我的apk中有一個設置,其中包含一個首選項列表,其中包含三個條目{Style_1, Style_2, Style_3}。當用戶單擊樣式時,我想更改樣式顏色,如primaryColor。我怎樣才能做到這一點?我可以在運行時更改我的android應用程序樣式嗎?

+0

是的,你可以通過編程方式在oncreate方法中應用主題,但是你需要重新創建應用新主題的活動 –

回答

0

我認爲,設置主題後點擊按鈕或選項可能是苛刻的活動要處理。 我的建議,你是重新加載按鈕點擊活動,但在此之前,只需保存STYLE_NAME,用戶希望在共享內存或申請。你可以申請共享優先只需看here

截至的onCreate你的活動的開始,應用的獲取部分共享喜好和應用的主題爲用戶指示。這將幫助您保留該用戶的主題,直到他/她卸載該應用程序或清除應用程序數據爲止。 如果他/她第一次使用該應用程序,則存儲的字符串將爲空,因此將加載具有默認主題的應用程序。

你可以簡單地通過使用下面的代碼重新載入按鈕,點擊你的活動:

public void onClick (View v){ 
    Intent intent = getIntent(); 
    finish(); 
    startActivity(intent); 
} 

希望它可以幫助!

1

是的,你可以設置主題是這樣的:

activity.setTheme(R.style.theme_large); 
    activity.setTheme(R.style.theme_small); 

    <style name="theme_large"> 
      <item name="main_background">@drawable/background_red</item> 
      <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
      <item name="button_light">@color/button_light</item> 
    </style> 



    <style name="theme_small"> 
      <item name="main_background">@drawable/background_red</item> 
      <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
      <item name="button_light">@color/button_light</item> 
    </style> 
1

創建兩個樣式

setTheme(darkTheme ? R.style.AppThemeDark : R.style.AppThemeLight); 

<style name="AppThemeDark"> 
      <item name="main_background">@drawable/background_dark</item> 
      <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
      <item name="button_light">@color/button_dark</item> 
    </style> 



<style name="AppThemeLight"> 
     <item name="main_background">@drawable/background_light</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryLight</item> 
     <item name="button_light">@color/button_light</item> 
</style> 
1

是的,你可以很容易地做到這一點,我做這一切的時候。

的setContentView之前就調用此方法是這樣的:

setTheme(R.style.Theme); 
setContentView(R.layout.activity_layout); 

現在我要做的就是,我需要一個靜態int變量在應用程序常數和改變它根據我的主題。然後我做這樣的事情

//This is in my constants file 
public static int CURRENT_THEME = R.style.AppTheme; 

//This is in my onCreate of every Activity. 
setTheme(Constants.CURRENT_THEME); 
setContentView(R.layout.activity_layout); 

希望這有助於。

相關問題