【问题标题】:Change background color in settings在设置中更改背景颜色
【发布时间】:2014-05-09 10:49:02
【问题描述】:

我正在尝试在我的应用中进行设置活动,我想知道如何设置允许用户更改背景颜色的首选项。

我已经完成了设置活动,并且我正在考虑在用户单击“颜色”选项时进行子集设置,以显示用户可以设置的各种颜色(或者,更好的是,使用包含所有颜色的调色板)可用的颜色)。

我怎么能意识到这一点?

【问题讨论】:

标签: android settings


【解决方案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 文件夹中创建一个名为数组的 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);

【讨论】:

  • 我不知道该怎么感谢你,你的回答很完整,非常感谢你。我只是想指出使后台工​​作的最后过程对我不起作用,所以我做了这个'RelativeLayout rl = (RelativeLayout)findViewById(R.id.container); SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); int bgc = Color.parseColor(sharedPref.getString("background_color", "#000000")); rl.setBackgroundColor(bgc); ' 问题是,如果我从设置中用屏幕外的箭头返回,则不会应用背景
  • 我遇到了同样的问题。这里的技巧是在活动的 onResume 方法中调用 setbackground 方法。为了感谢我,你总是可以接受我的回答:-)
  • 哦对了,答案太明显了!非常感谢,我马上接受;)
猜你喜欢
  • 2011-11-11
  • 2018-09-14
  • 2013-08-08
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多