我正在尝试在应用设备离线时更改主题。但要实现改变背景颜色不会有帮助,我需要改变整个视图和文本颜色。但是为了获得FindViewById的所有视图并不是一个有效的方法来实现这一点,因为我获得了大量的活动视图,因为我尝试使用主题
<item name="android:textColor">@android:color/black</item>
<item name="android:windowBackground">@android:color/white</item>
但由于它只显示一个彩色TextView,因此我无法使用此方法进行活动,因为它有多种颜色,并且必须在创建活动之前更改主题。
请提供支持使用多个彩色视图更改主题的解决方案
答案 0 :(得分:0)
public class Utils {
private static int sTheme;
public final static int THEME_MATERIAL_LIGHT = 0;
public final static int THEME_YOUR_CUSTOM_THEME = 1;
public static void changeToTheme(Activity activity, int theme) {
sTheme = theme;
activity.finish();
activity.startActivity(new Intent(activity, activity.getClass()));
activity.overridePendingTransition(android.R.anim.fade_in,
android.R.anim.fade_out);
}
public static void onActivityCreateSetTheme(Activity activity) {
switch (sTheme) {
default:
case THEME_MATERIAL_LIGHT:
activity.setTheme(R.style.Theme_Material_Light);
break;
case THEME_YOUR_CUSTOM_THEME:
activity.setTheme(R.style.Theme_YOUR_CUSTOM_THEME);
break;
}
}
}
在您的活动中:
@Override // Any Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// MUST BE SET BEFORE setContentView
Utils.onActivityCreateSetTheme(this);
// AFTER SETTING THEME
setContentView(R.layout.activity_theme);
}