ShellWen's Cave
Some secret there.
ShellWen's Cave

解决 MIUI 强制应用深色

前言

在 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

谁他妈买小米!雷军!金凡!

(一位小棕熊因为言语过激被叉走)

知识共享许可协议
若无特殊说明,本文「解决 MIUI 强制应用深色」采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议(BY-NC-SA) 进行许可,如需商业许可请另行获取授权。

发表回复

textsms
account_circle
email

ShellWen's Cave

解决 MIUI 强制应用深色
前言 在 MIUI 系统上,新安装的应用在手机开启深色模式的情况下默认会被强制进行部分界面元素反色处理,这对于一些不愿意适配 Android 深色模式的“国产毒瘤”来说自然是好事,但是特别…
扫描二维码继续阅读
2021-11-22