You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:系统自动生成的Splash Screen在深色主题下仍显示白色的解决方法

解决系统默认启动页适配深色主题问题

系统自动生成的默认启动页(非通过Splash API自定义的)在系统开启深色主题时仍显示白色,无法和深色主题保持视觉一致。解决这个问题的核心是通过原生主题配置控制启动页背景——因为系统启动页是在Compose内容加载前就渲染的,和Compose的主题设置无关。

解决步骤:

  1. 配置不同主题模式下的窗口背景
    在res/values/styles.xml中设置浅色主题的启动页背景:

    <style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
        <!-- 浅色主题下的启动页背景 -->
        <item name="android:windowBackground">@color/white</item>
    </style>
    

    在res/values-night/styles.xml中设置深色主题的启动页背景:

    <style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
        <!-- 深色主题下的启动页背景 -->
        <item name="android:windowBackground">@color/black</item>
    </style>
    

    注意主题父类要选择支持昼夜切换的类型(比如Theme.Material3.DayNight.*),这样系统才能根据当前主题模式自动加载对应配置。

  2. 确保主Activity引用该主题
    在AndroidManifest.xml中,给主Activity指定上述主题:

    <activity
        android:name=".MainActivity"
        android:theme="@style/AppTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    

补充说明:

你提供的Compose相关代码(onCreate和AppTheme)无需修改,这些是控制应用加载后的UI主题,而系统默认启动页的渲染时机早于Compose初始化,因此必须通过原生主题的windowBackground属性来控制背景色。

内容的提问来源于stack exchange,提问作者NullPointerException

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:32:36