如何基于Android系统设置禁用自动更改昼夜主题?

问题描述

到目前为止,我已经从Google那里学习到了,您必须使用 Theme.Appcompat.Daynight 或Material Daynight主题来使您的应用支持深色模式。并且您需要在 values values-night 目录中使用不同的 styles.xml 。 我不愿意让我的应用支持深色主题。但是,当我将Android系统主题(从通知面板)更改为深色时,我的应用程序将变为深色。 我使用 Theme.Appcompat.Light 作为基本主题,我的应用程序没有支持黑暗模式,但我的应用程序仍然变暗。我是第一次使用cardview,不知道这可能是原因,因为我是android编程的新手。 非常欢迎您的帮助。请在这里查看屏幕截图:

System dark mode off

System dark mode on

解决方法

您可以在所有应用程序中使用它

class AppController: Application() {
   override fun onCreate() {
      super.onCreate()
      AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
   }
}
,

在调用 setContentView 之前在 MainActivity 的 onCreate 方法中添加这一行:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
,

在 android 10 中,android 为应用程序设置了黑暗以防止这种情况, 将以下样式添加到您的默认主题中:

 <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>