我已经使用以下方法实现了暗模式:
when (themePref) {
ThemeUi.LIGHT -> {
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO)
}
ThemeUi.DARK -> {
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES)
}
ThemeUi.AUTO_BEFORE_DARK, ThemeUi.AUTO_BEFORE_LIGHT ->
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
}
它在 Application 类的创建过程中应用(以及当用户想要在应用程序设置中的模式之间滑动时)。
一切正常,除了一个继续遵循电话模式的可绘制对象。第一次启动应用程序时,drawable在light文件夹中,但是如果我在手机上将暗模式打开->关闭->打开,然后再次启动应用程序,这次drawable将是黑色的,即使其他一切都处于灯光模式。
我不知道它是否已链接,但它是唯一一个在 png、hdpi、mdpi、xhdpi、xxhdpi 和 xxxhdpi 中的可绘制对象(适用于明暗模式)
我不能将 SVG 用于这个可绘制对象,我没有找到解决方案。
我的应用主题是 Theme.AppCompat.DayNight.DarkActionBar
请注意,它也不能以其他方式工作,如果我的应用程序处于暗模式并且手机处于亮模式,则可绘制对象将是亮的。