前言
在 MIUI 系统上,新安装的应用在手机开启深色模式的情况下默认会被强制进行部分界面元素反色处理,这对于一些不愿意适配 Android 深色模式的“国产毒瘤”来说自然是好事,但是特别蛋疼的就是,这玩意经常会误判,即对于一些原本就适配了深色模式的软件依然进行反色处理,导致界面奇奇怪怪,什么文字颜色和背景颜色相同,正常的图片被反色,亦或者原本深色的背景被换成白色,等等。
这里对应用开发者给出两条解决方案,也请各路大神在评论区抛砖引玉。
另:如果你只是普通的用户,你可以手动在 系统设置-显示-更多深色模式设置 中看到 MIUI 进行强制深色的应用列表,关闭对应应用的开关即可。
解决方案
1. 使用 android:forceDarkAllowed
主题属性
android:forceDarkAllowed
是 Android 官方在 SDK Level 29 / Android 10 开始引入的主题属性,顾名思义,其作用为标记该主题是否允许被系统强制深色化,其默认值为 true
。
既然我们需要禁止系统强制反色,那么只需要把它的值设置为 false
就行了。
在定义主题的 xml 中,增加如图一行即可。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Geescan" parent="android:Theme.Material.Light.NoActionBar">
<item name="android:forceDarkAllowed">false</item>
</style>
</resources>
2. 修改主题为 Dark 主题(不推荐)
即修改默认的 Light 主题到 Dark 主题
例如:如果你的应用原本的主题为(这也是 Jetpack Compose 新项目模板的默认值)android:Theme.Material.Light.NoActionBar
,只需要将其修改为 android:Theme.Material.NoActionBar
即可
- <style name="Theme.Geescan" parent="android:Theme.Material.Light.NoActionBar">
+ <style name="Theme.Geescan" parent="android:Theme.Material.NoActionBar">
And more
谁他妈买小米!雷军!金凡!
(一位小棕熊因为言语过激被叉走)
发表回复