2013-01-10 27 views
2

假設我想讓用戶更改應用程序的背景顏色。我想創建幾個XML佈局文件,然後有一個ListView與佈局文件的列表。然後,當用戶選擇其中一個時,相應的xml文件將被加載。如何讓用戶選擇背景顏色

這可能嗎?如果是的話,我應該怎麼做?

回答

4

最簡單的方法是在代碼中進行動態操作。只需將用戶顏色保存到SharedPreferences中,然後在代碼中將其用作視圖的背景。

所以我建議使用ColorPikerDialog來選擇任何顏色。你可以使用例如這個庫https://github.com/gsingh93/android-ColorPickerPreference

SharedPrefrences prefs = getSharedPrefrences(YOUR_SHARED_PREFS, 0); 
int colorId = prefs.getInt(BACKGROUND_COLOR, 0); 
if(colorId != 0) { 
    setBackgroundToColorId(colorId); 
} 

祝你好運!

+0

謝謝您的回答。你可以在代碼中做一個例子嗎? – user1301428

+0

Plese介紹我,「應用程序的背景顏色」是什麼意思?)如果你想爲任何視圖設置特殊的顏色作爲背景顏色,你可以在代碼中爲每個視圖使用方法setBackground(Color)。如果你想爲你的視圖設置任何drawable,我想你可以嘗試在xml中創建任何樣式並根據用戶選擇設置樣式。 –

+0

我的意思是'values/colors'中聲明的'#133b96'。我希望用戶能夠通過從列表中選擇來更改它,並在整個應用程序中更改它。 – user1301428

0

考慮這件事情,因爲只有建議,

你可以把它拿用戶想要的顏色的顏色代碼一個EditText,這樣,您可以使用TextWatcher的顏色有十六進制值,並且每種顏色都有修復長度爲6個字母數字字符,如「FF0000」,只要長度達到6,顏色將適用。

searchBox.addTextChangedListener(new TextWatcher() { 
     public void onTextChanged(CharSequence s, int start, int before, int count) {} 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
     public void afterTextChanged(Editable editable) 
     { 

      if(editable.toString().length==6) 
       //set color of background 
     } 
    }); 
} 
1

我已經這樣做,當用戶選擇從列表視圖顏色跟蹤colorid並將其保存在共享偏好@llya傑米多夫說。

editor = getSharedPreferences(PREFS_NAME, 0).edit(); 
    editor.putString(PREF_COLOR, <userselectedcolor>); 

加載每個活動前做這樣的

pref = getSharedPreferences(PREFS_NAME, 0); 
      int color= pref.getString(PREF_COLOR, null); 
    if(color!=0) 
    { 
    yourlayoutid.setbackgroundColor(Color); 
    }