如何通过三个单选按钮更改所有xml页面的背景颜色,一个是红色,另一个是蓝色,另一个是绿色。当我点击其中一个时,所有XML页面的背景颜色将变为所选颜色。请帮助我。
答案 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
变量。参见示例:
Activity
与RadioButton
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()方法检查以下链接
动态设置它答案 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);
}
这样,当您加载页面时,其背景颜色将更改为您在偏好设置中存储的颜色。