实现一个主题切换按钮,让用户可以手动选择应用的主题模式,而不是依赖系统的深色模式开关。
以下是示例代码:
//在app的res/values/styles.xml中定义两个主题
//在app的res/values/colors.xml中定义颜色
//在主界面中添加一个Switch按钮 public class MainActivity extends AppCompatActivity {
private SwitchCompat switchBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
switchBtn = findViewById(R.id.switch_btn);
switchBtn.setChecked(AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES);
switchBtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
recreate(); //重启Activity以更新主题
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
recreate();
}
}
});
}
}
//在AndroidManifest.xml中指定主题为'AppTheme”