2

假设我希望用户更改应用程序的背景颜色。我正在考虑创建几个 xml 布局文件,然后有一个带有布局文件列表的 ListView。然后,当用户选择其中之一时,将加载相应的 xml 文件。

这可能吗?如果是,我该怎么做?

4

3 回答 3

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);
}

祝你好运!

于 2013-01-10T10:54:57.447 回答
1

我已经这样做了,当用户从 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);
    }
于 2013-01-10T11:15:35.273 回答
0

仅将这件事视为建议,

您可以放置​​一个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
        }
    });
}
于 2013-01-10T11:13:59.717 回答