即使使用 values-night 也无法在我的应用程序中禁用夜间模式
Can't disable Night Mode in my application even with values-night
问题是,当我在软件上查看预览时,一切都很好,但是当我 运行 我 phone 上的应用程序到处都使用白色时,它会变暗(可绘制对象和背景)。我没有在可绘制对象上使用 alpha,仅 android:color="@color/white"
.
问题的根源是我的 phone 启用了夜间模式,因此它自动更改了应用程序中的颜色。
为了尝试禁用夜间模式,我创建了一个文件夹 values-night
并复制了我的 @styles 和 @colors 以匹配白天和夜间模式。
styles.xml(晚上)
<resources>
<!-- Base application theme. -->
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowBackground">@color/colorAccent</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
colors.xml(晚上)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#1d1d1d</color>
<color name="colorPrimaryDark">#1d1d1d</color>
<color name="colorAccent">#F8F8F8</color>
<color name="textColor">#1d1d1d</color>
</resources>
在我的MainActivity.xml
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:background="@color/colorAccent"
android:theme="@style/MyTheme"
android:layout_height="match_parent"
tools:context=".MainActivity">
在我的Manifest.xml
android:theme="@style/MyTheme"
我检查了 How to disable night mode in my application even if night mode is enable in android 9.0 (pie)? and 上的答案并做了 values-night
文件夹,但没有解决问题。
但问题仍然存在,知道我在这里遗漏了什么吗?提前致谢。
只删除themes.xml(night)
xml个文件
或将 Theme.AppCompat.Light.NoActionBar
添加到 themes.xml(night)
xml 文件
只需更改此
<style name="YourThemeName" parent="Theme.MaterialComponents.DarkActionBar">
到
<style name="YourThemeName" parent="Theme.AppCompat.Light.DarkActionBar">
在主题和主题之夜
并确保主题和主题之夜的所有颜色都相同
我的小米 Redmi Note 7 也遇到了同样的问题。我在 MainActivity.create()
:
中尝试了这段代码
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
但它不适用于某些小米设备,包括我的,但它适用于其他 phones。
所以我找到的唯一解决方案是将 <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
添加到 styles.xml
中的每个 AppTheme
。像这样:
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
</style>
它对我的 phone 很好用。
只需删除 themes-night 文件,仅此而已,对我有用
第一步:
从您的值文件夹
中删除themes(night).xml
第 2 步:
将 themes.xml
中应用样式的父属性更改为
<style name="Theme.AppName" parent="Theme.MaterialComponents.DayNight.NoActionBar">
至
<style name="Theme.AppName" parent="Theme.MaterialComponents.Light.NoActionBar">
注意从“DayNight”到“Light”的变化
现在,即使您的 phone 设置为深色模式,因为不存在夜间值,并且您继承了您选择的任何 Material 主题的浅色版本,您应用的主题应该保持不变。
这对我有用。让我知道它是否也适合你。
问题是,当我在软件上查看预览时,一切都很好,但是当我 运行 我 phone 上的应用程序到处都使用白色时,它会变暗(可绘制对象和背景)。我没有在可绘制对象上使用 alpha,仅 android:color="@color/white"
.
问题的根源是我的 phone 启用了夜间模式,因此它自动更改了应用程序中的颜色。
为了尝试禁用夜间模式,我创建了一个文件夹 values-night
并复制了我的 @styles 和 @colors 以匹配白天和夜间模式。
styles.xml(晚上)
<resources>
<!-- Base application theme. -->
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowBackground">@color/colorAccent</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
colors.xml(晚上)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#1d1d1d</color>
<color name="colorPrimaryDark">#1d1d1d</color>
<color name="colorAccent">#F8F8F8</color>
<color name="textColor">#1d1d1d</color>
</resources>
在我的MainActivity.xml
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:background="@color/colorAccent"
android:theme="@style/MyTheme"
android:layout_height="match_parent"
tools:context=".MainActivity">
在我的Manifest.xml
android:theme="@style/MyTheme"
我检查了 How to disable night mode in my application even if night mode is enable in android 9.0 (pie)? and values-night
文件夹,但没有解决问题。
但问题仍然存在,知道我在这里遗漏了什么吗?提前致谢。
只删除themes.xml(night)
xml个文件
或将 Theme.AppCompat.Light.NoActionBar
添加到 themes.xml(night)
xml 文件
只需更改此
<style name="YourThemeName" parent="Theme.MaterialComponents.DarkActionBar">
到
<style name="YourThemeName" parent="Theme.AppCompat.Light.DarkActionBar">
在主题和主题之夜
并确保主题和主题之夜的所有颜色都相同
我的小米 Redmi Note 7 也遇到了同样的问题。我在 MainActivity.create()
:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
但它不适用于某些小米设备,包括我的,但它适用于其他 phones。
所以我找到的唯一解决方案是将 <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
添加到 styles.xml
中的每个 AppTheme
。像这样:
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
</style>
它对我的 phone 很好用。
只需删除 themes-night 文件,仅此而已,对我有用
第一步: 从您的值文件夹
中删除themes(night).xml
第 2 步:
将 themes.xml
中应用样式的父属性更改为
<style name="Theme.AppName" parent="Theme.MaterialComponents.DayNight.NoActionBar">
至
<style name="Theme.AppName" parent="Theme.MaterialComponents.Light.NoActionBar">
注意从“DayNight”到“Light”的变化
现在,即使您的 phone 设置为深色模式,因为不存在夜间值,并且您继承了您选择的任何 Material 主题的浅色版本,您应用的主题应该保持不变。
这对我有用。让我知道它是否也适合你。