【发布时间】:2014-05-09 10:49:02
【问题描述】:
我正在尝试在我的应用中进行设置活动,我想知道如何设置允许用户更改背景颜色的首选项。
我已经完成了设置活动,并且我正在考虑在用户单击“颜色”选项时进行子集设置,以显示用户可以设置的各种颜色(或者,更好的是,使用包含所有颜色的调色板)可用的颜色)。
我怎么能意识到这一点?
【问题讨论】:
-
@Sripathi 感谢您提供的链接,但我无法理解它的指南
我正在尝试在我的应用中进行设置活动,我想知道如何设置允许用户更改背景颜色的首选项。
我已经完成了设置活动,并且我正在考虑在用户单击“颜色”选项时进行子集设置,以显示用户可以设置的各种颜色(或者,更好的是,使用包含所有颜色的调色板)可用的颜色)。
我怎么能意识到这一点?
【问题讨论】:
如果你已经创建了设置活动,它会类似于这个
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 文件夹中创建一个名为数组的 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);
【讨论】: