0

我试图让用户通过单选按钮更改我的应用程序的颜色。用户点击一个单选按钮,一个方法被调用。现在我想将我的 5 个 xml 文件背景颜色更改为 x/y/z。但是我不知道我应该如何引用xml文件本身,因为它们没有id。我在字符串资源中有5种颜色,所以当我可以引用xml文件时,背景颜色会改变对于所有文件。(替换字符串的颜色的十六进制表示法)。可以完成还是我必须重新开始旋转木马?

 public void rbbgColourClicked(View view) {
            // Is the button now checked?
            boolean checked = ((RadioButton) view).isChecked();

            // Check which radio button was clicked
            switch(view.getId()) {
                case R.id.rbbgcolour_grey:
                    if (checked)
                        // Change to grey
                    break;
                case R.id.rbbgcolour_blue:
                    if (checked)
                        // Change to blue
                    break;


                case R.id.rbbgcolour_white:
                    if (checked)
                        // Change to white
                    break;



            }



  }

如果我输入

   LinearLayout one = (LinearLayout) findViewById(R.layout.preferences);
                        one.setBackgroundColor(0xff888888);

无法理解为什么它在那里。

谢谢

4

3 回答 3

1

采用setBackgroundResource()

例子:

view.setBackgroundResource(R.id.rbbgcolour_grey);
于 2013-10-26T19:22:28.923 回答
1
LinearLayout ll = (LinearLayout) findViewById(R.id.myLinearLayout);
ll.setBackgroundColor(getResources().getColor(R.color.red));
于 2013-10-26T19:23:47.670 回答
1

您可以使用 SharedPreferences 来做到这一点。您可以将背景颜色十六进制代码存储为首选项。当用户单击单选按钮时,您必须更改 SharedPreferences 中的十六进制代码。它是这样的......

在每个活动的 onCreate...

SharedPreferences sp = getSharedPreferences("MyPref", 0);
String hexaColor = sp.getString("hexa", "#000000"); //default color will be #000000

然后将其设置为这些活动的背景颜色。

当用户单击单选按钮时,请执行此操作...

SharedPreferences sp = getSharedPreferences("MyPref", 0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("hexa", "new hexa code");
editor.commit();

希望这会帮助你。

于 2013-10-26T20:03:51.197 回答