我正在尝试在我的应用中进行设置活动,我想知道如何进行允许用户更改背景颜色的首选项。
我已经完成了设置活动,当用户点击“颜色”选项时,我正在考虑进行子集化,该选项显示用户可以设置的各种颜色(或者更好,使用所有颜色的调色板)可用的颜色)。
我怎么能意识到这一点?
答案 0 :(得分:1)
如果您已经创建了设置活动,那么它将类似于此
public class NormalSettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.normal_preferences);
}
}
在您的首选项xml添加首选项类别
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="Background Color Settiongs" >
<ListPreference
android:defaultValue="#111111"
android:entries="@array/colorName"
android:entryValues="@array/colorCode"
android:key="background_color"
android:summary="Set background color of app"
android:title="Colors" />
</PreferenceCategory>
</PreferenceScreen>
然后在values文件夹中创建一个名为arrays的xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="colorName">
<item name="0">Red</item>
<item name="1">Black</item>
<item name="2">Yellow</item>
<item name="3">White</item>
</string-array>
<string-array name="colorCode">
<item name="0">#ff0000</item>
<item name="1">#111111</item>
<item name="2">#ffff33</item>
<item name="3">#ffffff</item>
</string-array>
</resources>
然后在您的活动中,只需使用
设置背景颜色backgroundLayout.setBackgroundColor(Color.parseColor(mPreferenceManager.getDefaultSharedPreferences().getString("background_color", "#111111")));
这里 “background_color”来自首选项xml(android:key =“background_color”)
“#111111”是未找到匹配项时将设置的默认颜色
不要忘记创建全局变量
protected PreferencesManager mPreferenceManager;
并在onCreate中初始化,如
mPreferenceManager = PreferencesManager.instance(this);