如何通过三个单选按钮更改所有xml页面的背景颜色

时间:2015-05-19 09:35:33

标签: android

如何通过三个单选按钮更改所有xml页面的背景颜色,一个是红色,另一个是蓝色,另一个是绿色。当我点击其中一个时,所有XML页面的背景颜色将变为所选颜色。请帮助我。

3 个答案:

答案 0 :(得分:2)

您应该findViewById()layout并在方法setBackgroundColor()中设置。通过切换RadioButton,您可以指定不同的颜色。见下面的例子。

RelativeLayout rLayout = (RelativeLayout) findViewById(R.layout.the_id);
RadioButton rb = (RadioButton) findViewById(R.id.yourFirstRadioButton);
rb.setOnClickListener(listener);

然后:

OnClickListener listener = new OnClickListener (){
   public void onClick(View v) {
      switch(v.getId()){
      case 0: //assume 0 is red
           rLayout.setBackgroundColor(Color.parseColor(Color.RED));
           break;
      case 1: //assume 1 is blue
           rLayout.setBackgroundColor(Color.parseColor(Color.BLUE));
           break;
       case 2: //assume 2 is green
           rLayout.setBackgroundColor(Color.parseColor(Color.GREEN));
           break;
      }
   }
}

如果您想更改所有Activities中的布局颜色,您应该记住该值并将其传递给Intent或使用当前颜色声明static变量。参见示例:

ActivityRadioButton s:

Intent intent = new Intent(this, NextActivity.class); 
intent.putExtra("color", green);
startActivity(intent);

NextActivity中,您可以这样理解:

Bundle bundle = getIntent().getExtras();
if(bundle != null){
   switch(bundle.getInt("color")){
   case 0: // 0 was red
         rLayout.setBackgroundColor(Color.RED);
         break;
   case 1: // 1 was blue
         rLayout.setBackgroundColor(Color.BLUE);
         break;
   case 2: // 2 was green
         rLayout.setBackgroundColor(Color.GREEN);
         break;
   }
}

使用static变量,我希望您知道如何处理,因此通过切换RadioButton来分配值,在另一个Activity中检查switch/case中的值如上所述,陈述。

另一种常见方法是在SharedPreferences中节省价值。这是一个很好的做法,它很轻,但也取决于你有多少Activities。如果只是2 - 没有意义,如果10 - 是的。很好的回答是here

就是这样。祝你好运。

答案 1 :(得分:0)

使用自定义主题通过setTheme()方法检查以下链接

动态设置它

set theme dynamically

答案 2 :(得分:0)

这是一个选择:

您可以保存SharedPreferences切换的颜色。例如:

创建SharedPreferences参考:

      SharedPreferences prefs = getActivity().getSharedPreferences(    getActivity().getPackageName(),Context.MODE_PRIVATE);

然后当您选择一种颜色(例如蓝色)时:

     prefs.edit().putInt("TAG", Color.Blue).apply();

然后在任何Activity onCreate方法上(setContentView调用之后)或onViewCreatedMethod上的片段:

如果Activity

    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout."layout_id");

    SharedPreferences prefs = getActivity().getSharedPreferences(getActivity().getPackageName(),Context.MODE_PRIVATE);

    int backgroundColor = prefs.edit().getInt("TAG")
    View rootView = findViewById(R.id."layout_id");
    rootView.setBackgroundColor(backgroundColor);

}

如果Fragment

    public void onViewCreated(View view, Bundle savedInstanceState) {

    SharedPreferences prefs = getActivity().getSharedPreferences(getActivity().getPackageName(),Context.MODE_PRIVATE);

    int backgroundColor = prefs.edit().getInt("TAG")
    view.setBackgroundColor(backgroundColor);
    }

这样,当您加载页面时,其背景颜色将更改为您在偏好设置中存储的颜色。