【发布时间】:2021-09-10 17:12:44
【问题描述】:
我有一个应用程序,我在我的主要(也是唯一的)活动中强制“MODE_NIGHT_NO”,我在 super.onCreate() 之后立即执行此操作。
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO)
现在我在this guide 之后添加一个启动画面,基本上是:
-
为启动画面创建一个可绘制对象
-
在 values\themes.xml 中创建一个名为 SplashScreen 的样式,其父 AppTheme(AppTheme 的父级是 Theme.MaterialComponents.DayNight.NoActionBar)
<style name="SplashTheme" parent="AppTheme"> <item name="android:windowBackground">@drawable/splash_screen</item> </style> -
将 SplashTheme 分配给 Manifest 中的主要活动
android:name=".MainDrawerActivity" android:theme="@style/SplashTheme"... -
最后在 main Activity 中调用 setTheme,在 super.onCreate() 之前为整个应用设置正确的 AppTheme
override fun onCreate(savedInstanceState: Bundle?) { setTheme(R.style.AppTheme) super.onCreate(savedInstanceState) AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO) setContentView(R.layout.activity_main_drawer)
启动画面可以工作,但问题是启动画面结束后,主题变为暗模式。即使手机未处于暗模式。
我试过这样称呼它,但它也不起作用,同样的行为:
override fun onCreate(savedInstanceState: Bundle?) {
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO)
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_drawer)
我什至尝试删除 values-night\themes.xml 看看会发生什么,但结果相同。 (我已经恢复了所说的文件夹)
为什么添加 setTheme(AppTheme) 时 setDefaultNightMode(MODE_NIGHT_NO) 不能正常工作?
非常感谢任何指导。
【问题讨论】:
标签: android themes splash-screen