窗口背景可以放置在状态栏下面和导航栏上面吗?

16
根据此教程此答案,并参考其他教程,使用主题的android:windowBackground<layer-list/>似乎是创建Android启动屏幕的最受赞同的方法。
使用这种技术可以轻松地将标志居中在屏幕上;然而,我想将图形定位在屏幕顶部或底部。我遇到了问题,因为如下截图所示,windowBackground似乎绘制在屏幕顶部的状态栏和底部的导航栏后面,从而使图形被切断。


问题: 是否可以指示windowBackground在状态栏下方和导航栏上方定位?如果不行,使用windowBackground闪屏技术,是否可以创建一个不被状态栏或导航栏覆盖的闪屏界面?

要复现问题,请创建一个新的Android Studio项目,它将为您提供ic_launcher可绘制图像,并遵循上述链接中的任一教程,但使用以下layer-list可绘制图像。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:opacity="opaque">
    <item android:drawable="#000000"/>
    <item>
        <bitmap
            android:gravity="left|top"
            android:src="@drawable/ic_launcher"/>
    </item>
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_launcher"/>
    </item>
    <item>
        <bitmap
            android:gravity="bottom"
            android:src="@drawable/ic_launcher"/>
    </item>
</layer-list>
1个回答

22
你可以在Lollipop及更高版本的主题中将windowDrawsSystemBarBackgrounds设置为false
例如:res/values-v21/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Splash">
        <item name="android:windowBackground">@drawable/splash</item>
        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    </style>
</resources>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接