ユーザーにアプリの背景色を変更してもらいたいとしましょう。いくつかの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);
}
幸運を!
@llya Demidovが言ったように、ユーザーがそのcoloridをトラックするリストビューから色を選択し、共有設定に保存すると、私はすでにこれを行っています。
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);
}
これは提案としてのみ考えてください。
ユーザーが希望する色のカラーコードを使用するエディットテキストを配置できます。これにより、色は16進値になり、各色の長さは「FF0000」のように6文字の英数字に固定されるため、TextWatcherを使用できます。 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
}
});
}