即使使用值夜间,也无法在我的应用程序中禁用夜间模式

时间:2020-09-07 16:41:05

标签: java android xml android-studio themes

问题是,当我在软件上查看预览时,一切都很好,但是当我在手机上运行该应用程序时,到处都使用白色,它变成了深色(可绘制的图形和背景)。我没有在可绘制对象上使用Alpha,只有android:color="@color/white"

问题的根源是我的手机启用了夜间模式,因此它会自动更改应用程序中的颜色。

要尝试禁用夜间模式,我创建了一个文件夹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)?Dark Theme in android 9.0 changes my app layouts ugly的答案,并做了values-night文件夹,但是它不能解决问题。

但是问题仍然存在,知道我在这里想念什么吗?预先感谢。

3 个答案:

答案 0 :(得分:4)

我在小米红米 Note 7 上遇到了同样的问题。我在 MainActivity.create() 中尝试了这个代码:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

但它不适用于包括我在内的一些小米设备,尽管它适用于其他手机。

因此,我找到的唯一解决方案是将 <item name="android:forceDarkAllowed" tools:targetApi="q">false</item> 添加到 AppTheme 中的每个 styles.xml。像这样:

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
</style>

它在我的手机上运行良好。

答案 1 :(得分:0)

只需删除themes.xml(night) xml文件 或将Theme.AppCompat.Light.NoActionBar添加到themes.xml(night) xml文件中

答案 2 :(得分:-1)

简单地改变这个

<style name="YourThemeName" parent="Theme.MaterialComponents.DarkActionBar">

<style name="YourThemeName" parent="Theme.AppCompat.Light.DarkActionBar">

在主题和主题之夜

并确保主题和主题之夜的所有颜色都相同