有没有办法在旧的android中使用-night资源?

时间:2017-09-18 20:47:24

标签: java android android-night-mode

我想为我的应用程序实现夜间模式,但不想使用任何compat-libraries。我将资源放在values-night文件夹中并使用下一个代码:

UiModeManager systemService = (UiModeManager) this.getSystemService(UI_MODE_SERVICE);
systemService.setNightMode(UiModeManager.MODE_NIGHT_YES);

根据文档,它适用于API> 22,确实如此。 是否有一种解决方法可以强制使用API​​ 15-22上的-night文件夹中的资源?

2 个答案:

答案 0 :(得分:1)

来自documentation for UiModeManager.setNightMode()

  

注意:在API 22及更低版本中,夜间模式的更改仅在设备上启用cardesk模式时生效。从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及更高版本的设备上运行时才有效,在设备之前它将默认为灯光主题。