假設我想讓用戶更改應用程序的背景顏色。我想創建幾個XML佈局文件,然後有一個ListView與佈局文件的列表。然後,當用戶選擇其中一個時,相應的xml文件將被加載。如何讓用戶選擇背景顏色
這可能嗎?如果是的話,我應該怎麼做?
假設我想讓用戶更改應用程序的背景顏色。我想創建幾個XML佈局文件,然後有一個ListView與佈局文件的列表。然後,當用戶選擇其中一個時,相應的xml文件將被加載。如何讓用戶選擇背景顏色
這可能嗎?如果是的話,我應該怎麼做?
最簡單的方法是在代碼中進行動態操作。只需將用戶顏色保存到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);
}
祝你好運!
考慮這件事情,因爲只有建議,
你可以把它拿用戶想要的顏色的顏色代碼一個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
}
});
}
我已經這樣做,當用戶選擇從列表視圖顏色跟蹤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);
}
謝謝您的回答。你可以在代碼中做一個例子嗎? – user1301428
Plese介紹我,「應用程序的背景顏色」是什麼意思?)如果你想爲任何視圖設置特殊的顏色作爲背景顏色,你可以在代碼中爲每個視圖使用方法setBackground(Color)。如果你想爲你的視圖設置任何drawable,我想你可以嘗試在xml中創建任何樣式並根據用戶選擇設置樣式。 –
我的意思是'values/colors'中聲明的'#133b96 '。我希望用戶能夠通過從列表中選擇來更改它,並在整個應用程序中更改它。 –
user1301428