我想为我的应用程序实现夜间模式,但不想使用任何compat-libraries。我将资源放在values-night文件夹中并使用下一个代码:
UiModeManager systemService = (UiModeManager) this.getSystemService(UI_MODE_SERVICE);
systemService.setNightMode(UiModeManager.MODE_NIGHT_YES);
根据文档,它适用于API> 22,确实如此。 是否有一种解决方法可以强制使用API 15-22上的-night文件夹中的资源?
答案 0 :(得分:1)
来自documentation for UiModeManager.setNightMode()
:
注意:在API 22及更低版本中,夜间模式的更改仅在设备上启用
car
或desk
模式时生效。从API 23开始,对夜间模式的更改始终有效。
也许您可以使用其中一种UI模式?
答案 1 :(得分:0)
AppCompat库支持它。我不知道你为什么不想用它。我引自Chris Bane's Blog
正如您在Support Lib 23.2.0博文中看到的那样,AppCompat现在有了一个新的主题系列:Theme.AppCompat.DayNight。
这些主题的作用是根据一天中的时间在Theme.AppCompat(dark)和Theme.AppCompat.Light(light)之间切换。这对您的用户有很多好处,特别是如果您是一个内容应用程序(它似乎已成为Reddit客户端的标准功能)。需要注意的一点是,此功能实际上只有在API v14及更高版本的设备上运行时才有效,在设备之前它将默认为灯光主题。