窗口背景被状态栏裁剪了。

7

我正在将图片设置为窗口背景:

<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:windowBackground">@drawable/bg_window</item>   
</style>

它适用于平板电脑和全屏窗口:

enter image description here

但在手机上,它被状态栏裁剪:

enter image description here

这是事情的工作方式吗?我该如何避免这种情况?当然,我可以为每个布局设置背景,但我想知道是否只有这种方式来解决问题。

2个回答

4

我对这个问题的解决方案(至少对于手机)是创建一个xml可绘制对象,其中状态栏高度作为顶部偏移量

例如, drawable/window_background.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:top="25dp">
        <bitmap android:src="@drawable/some_background" />
    </item>
</layer-list>

如果状态栏在底部,这种方法将不起作用。

编辑:根据Aleksejs Mjaliks的建议,已经对答案进行了修改,使用了单个xml可绘制对象。


是的,我需要我的应用程序在平板电脑和手机上都能运行。但无论如何感谢您的建议。 - Andrii Chernenko
刚有了另一个想法。我们可以在不同的values文件夹中定义此高度的尺寸,而不是为每个状态栏大小定义不同的xml文件,例如在values-sw720dp-land中,这可以是0dp。或者我们可以在drawable-swxxx文件夹中为平板电脑放置另一个window_background.xml。 - Zarokka
一些7英寸的平板电脑(例如Galaxy Tab)可以在屏幕顶部或底部拥有状态栏。我不确定,但看起来这取决于安装的Android版本。 - Andrii Chernenko
1
使用 dpandroid:top="25dp" - Aleksejs Mjaliks

2
尝试按照以下方式进行操作...
<style name="AppTheme" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
<item name="android:windowBackground">@drawable/bg_window</item>   
</style>

:)


这绝对是一个选项,但状态栏将在手机上无法访问,我不希望发生这种情况。 - Andrii Chernenko
另一个选项是将背景图像设置为主布局背景。 - Anu
我在我的问题中提到了这种方法。 - Andrii Chernenko

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