Kotlin应用在MIUI系统中单独关闭深色模式失效问题求助
解决MIUI 12下应用无法单独关闭深色模式的问题
1. 添加MIUI专属主题禁用属性
MIUI的深色模式适配有私有逻辑,仅依赖Android原生配置可能被覆盖,需补充MIUI专属设置:
- 在
res/values/themes.xml的根标签中引入MIUI命名空间:xmlns:miui="http://schemas.android.com/apk/res-auto" - 在主题样式里同时声明原生和MIUI的禁用强制深色属性:
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item> <item name="miui:forceDarkAllowed">false</item>
2. 移除android:configChanges="uiMode"配置
之前添加的该配置会阻止系统在UI模式变化时重启Activity,导致主题无法及时更新。建议删除Activity标签中的此配置,让系统自动重启Activity以应用新的主题设置。
3. 代码手动控制主题(兜底方案)
若上述方法无效,可在Activity启动阶段手动读取系统UI模式并设置对应主题:
override fun onCreate(savedInstanceState: Bundle?) { val currentNightMode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK // 替换为你自己的浅色/深色主题 if (currentNightMode == Configuration.UI_MODE_NIGHT_NO) { setTheme(R.style.Theme_YourApp_Light) } else { setTheme(R.style.Theme_YourApp_Dark) } super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }
4. 验证系统设置与缓存
确认系统设置中该应用的「深色模式」已设为「浅色」或「跟随系统」,部分MIUI版本存在设置缓存,可尝试重启应用或设备后再测试。
内容的提问来源于stack exchange,提问作者YouStones
相关产品推荐
相关产品推荐

