我创建了一个新项目,该项目仅包含一个使用新日/夜主题的非常简单的活动。即使在应用程序类的静态块中调用AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
并在活动中调用getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
,活动也会显示夜间主题。我已经在活动及其报告 UI 模式为夜间时设置了一个断点,所以我不知道为什么它拒绝显示白天主题。
我正在针对 API 23 进行编译/针对,并在运行棉花糖的 Nexus 5 上进行测试
请参阅 https://code.google.com/p/android/issues/detail?id=201910。这将在 23.2.1 错误修复版本中修复。
现在,Activity.onCreate()
您可以通过调用
getTheme().applyStyle(R.style.Theme_AppCompat_<whatever>, true);
其中<whatever>
是您在该活动中使用的主题。更新到 23.2.1 后,将不需要此解决方法。
您还需要调用 yourAppCompatActivity.getDelegate().applyDayNight();
。