Android 12+深色模式下启动屏背景色被忽略问题求助
问题排查与解决步骤
1. 补全启动屏样式的父主题继承
你的AppTheme.Splash未指定父主题,Android 12+启动屏样式必须继承官方标准父主题才能生效。修改res/values-v31/styles.xml:
<resources> <!-- Splash Screen Theme (Android 12+) --> <style name="AppTheme.Splash" parent="Theme.SplashScreen"> <item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_foreground</item> <item name="android:windowSplashScreenBackground">@color/primary</item> <!-- 针对MIUI定制ROM:强制图标背景色与启动屏背景一致,避免系统自动替换 --> <item name="android:windowSplashScreenIconBackgroundColor">@color/primary</item> </style> </resources>
2. 确认深色模式下的颜色资源配置
检查res/values-night/colors.xml中是否正确定义了primary颜色,如果该颜色在深色模式下与系统背景重叠或为透明,会导致背景色看起来被忽略:
<!-- res/values-night/colors.xml --> <resources> <color name="primary">#适配深色模式的背景色值</color> </resources>
同时保证res/values-night-v31/styles.xml的配置与values-v31完全一致,确保深色模式下样式正确匹配。
3. 适配MIUI定制ROM的特殊行为
Poco X4 Pro 5G搭载的MIUI会对第三方应用启动屏做定制修改,可尝试以下操作:
- 进入手机「设置」→「应用设置」→ 找到你的应用 →「自定义通知」→ 关闭「使用系统样式」类选项
- 关闭手机深色模式中的「增强深色模式」「强制应用深色模式」等全局开关后重试
4. 验证启动Activity的主题绑定
确保AndroidManifest.xml中启动Activity的android:theme指向正确的启动屏样式:
<activity android:name=".SplashActivity" android:theme="@style/AppTheme.Splash" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
5. 规范启动屏过渡逻辑
Android 12+要求在启动Activity的onCreate中先调用installSplashScreen(),再执行其他初始化逻辑:
class SplashActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // 必须在super.onCreate之前调用 val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) // 后续页面跳转等逻辑 } }
内容的提问来源于stack exchange,提问作者Grodriguez
相关产品推荐
相关产品推荐

