我也会尝试:
public Button button;
public View background;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_option);
button = (Button)findViewById(R.id.color);
background = findViewById(R.id.colorBackg);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
int colorCreat = Color.rgb(255, 255, 255);
background.setBackgroundColor(colorCreat);
}
});
}
它可以工作,但是当我更改活动时,颜色会重置。如何永久更改所有背景的颜色?谢谢。
答案 0 :(得分:3)
在项目的res目录中的styles.xml下创建样式
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="app_theme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@android:color/black</item>
</style>
</resources>
然后可以将上述主题应用于清单中的应用程序元素
<application
android:theme="@style/Theme.Activity.Default"/>
因此,这意味着所有活动都将继承Application标记中声明的上述样式,除非任何单独的Activity覆盖它并指定其他样式。
希望有帮助。
答案 1 :(得分:0)
就像answered的Mayank Bhatnagar一样,您应该在styles.xml文件中创建样式。有关详细的实现,请参见the guide。
如果您希望能够动态更改主题,建议您使用Settings来定义要使用的主题。然后在您的活动中倾听偏好更改。
首先创建一个用于更改首选项的监听器,该监听器将对样式更改做出反应。
public class StylePreferenceChangeListener implements OnSharedPreferenceChangeListener {
//String constant used as ID to the style preference (used here and in SettingActivity)
public static String PREFERENCE_STYLE_ID = "preference.style";
//The activity that we want to modify style
private Activity activity;
public StylePreferenceChangeListener(Activity activity) {
super();
this.activity = activity;
}
// listener implementation
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if(PREFERENCE_STYLE_ID.equals(key)) {
int newStyleId = prefs.getInt(key, R.style.default_style);
activity.getTheme.applyStyle(newStyleId, true);
}
}
在您的活动中,创建此侦听器的实例。然后在onResume()/ onPause()中注册/注销。
public class myActivity extends Activity {
//Our listener reference
StylePreferenceChangeListener myListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate();
setContentView(R.layout.myactivity);
//create instance now so we are sure the activity exist
myListener = new StylePreferenceChangeListener(this);
}
@Override
protected void onResume() {
super.onResume();
//register our listener
getSharedPreferences().registerOnSharedPreferenceChangeListener(myListener);
}
protected void onPause() {
super.onPause();
//unregister our listener
getSharedPreferences().unregisterOnSharedPreferenceChangeListener(myListener);
}
protected void onDestroy() {
super.onDestroy();
//The activity is meant to be destroy, makes no sense to keep our listener
//Drop his reference to allow garbage collecting
myListener = null;
}
}