Android 5.1设备应用冷启动阶段自定义主题设置全屏背景异常问题
解决Android 5.1冷启动背景不生效的问题
这个问题我之前帮同事排查过,Android 5.x(Lollipop)的冷启动窗口机制和Android 10+确实有差异,你踩的坑很常见——直接设置android:background在旧版本的冷启动阶段是不生效的。
问题原因
在Android 5.x系统中,应用冷启动时系统会自动创建一个初始过渡窗口(就是我们看到的启动页背景),这个窗口的背景是读取主题里的android:windowBackground属性,而不是你设置的android:background。你使用的父主题Theme.DeviceDefault.Light.NoActionBar.Fullscreen在Android 5.x中默认的windowBackground是黑色,所以不管你怎么改background,冷启动时系统都不会读取这个值。
修复方案
只需要把主题里的android:background替换(或新增)为android:windowBackground即可:
<style name="MyTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar.Fullscreen"> <!-- 这个属性才是Android 5.x冷启动窗口读取的背景 --> <item name="android:windowBackground">@drawable/myDrawable</item> <!-- 可选:如果你的Activity布局需要用到这个背景,可以保留 --> <item name="android:background">@drawable/myDrawable</item> </style>
额外注意
- 如果你想用纯色背景,直接给
windowBackground设置十六进制颜色值(比如#ffffff)也能在Android 5.x上正常生效 - 这个修改不需要单独做版本适配,直接在通用的
values/styles.xml中配置就能兼容Android 5.x及以上所有版本
内容的提问来源于stack exchange,提问作者Zippy
相关产品推荐
相关产品推荐

