假设我希望用户更改应用程序的背景颜色。我正在考虑创建几个 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);
}
祝你好运!
我已经这样做了,当用户从 listview 轨道中选择一种颜色时,该 colorid 并将其保存在共享首选项中,正如@llya Demidov 所说。
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);
}
仅将这件事视为建议,
您可以放置一个edittext,它采用用户想要的颜色的颜色代码,您可以使用TextWatcher,因为颜色具有十六进制值,并且每种颜色的固定长度为6个字母数字字符,如“FF0000”,只要长度过去到六颜色将适用。
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
}
});
}