在 MIUI 11 / 12 下激活暗模式时的主题问题
Posted
技术标签:
【中文标题】在 MIUI 11 / 12 下激活暗模式时的主题问题【英文标题】:Theme Problem when Dark Mode is activated under MIUI 11 / 12 【发布时间】:2020-10-23 01:12:43 【问题描述】:编辑:MIUI 强制在我的应用中激活暗模式,因此应用看起来很糟糕。
在我的应用程序的某些部分中,当我将颜色设置为“白色”时,它将显示为白色。
如果我将其设置为“灰色”,它将显示为灰色。
如果我将它设置为“红色”,它将显示为红色。
但是:如果我将它设置为“黑色”,它将是“白色!”
我该如何解决这个问题??
【问题讨论】:
【参考方案1】:找到解决方案!
将 <item name="android:forceDarkAllowed">true</item>
设置为 false
在App_Resources/Android/src/main/res/values/styles.xml
感谢此链接: https://medium.com/@kivind/nativescript-disabling-dark-mode-382e5dfd11bd
所以 style.xml 应该是这样的:
<style name="AppThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
<item name="toolbarStyle">@style/NativeScriptToolbarStyle</item>
<item name="android:forceDarkAllowed">false</item>
<item name="colorPrimary">@color/ns_primary</item>
<item name="colorPrimaryDark">@color/ns_primaryDark</item>
<item name="colorAccent">@color/ns_accent</item>
</style>
【讨论】:
不,这对我不起作用。 MIUI 12.04 全球版。安卓 10。 确保 AppThemeBase 是您在 Manifest 中的主题,如下所示: android:theme="@style/AppThemeBase" 您可能还想在 res/values-v29 中创建一个单独的主题以保留false
很重要,一味复制了真实的:D【参考方案2】:
结合许多不同的解决方案,我想出了这个演练
AppEntryPoint.kt
class AppEntryPoint : Application()
override fun onCreate()
super.onCreate()
/*in some XIAOMI devices seems to be necessary*/
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
AndroidManifest.xml
<application
android:name=".AppEntryPoint"
...
android:theme="@style/Theme.MyMainTheme">
...
</application>
themes.xml
<style name="Theme.MyMainTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
...
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
</style>
我不知道这是否是正确的解决方案,但现在它对我有用。 在某些小米设备中可能有一种奇怪的方式来管理这种行为......
希望这个答案对其他人也有用
【讨论】:
【参考方案3】:在小米红米 9 上,至少必须在夜间和白天的 theme.xml 文件中将此值设置为 false。并像魅力一样工作。
【讨论】:
以上是关于在 MIUI 11 / 12 下激活暗模式时的主题问题的主要内容,如果未能解决你的问题,请参考以下文章
防止在不增加 SDK 版本的情况下在 MIUI 中强制暗模式