如何补偿RelativeLayout中的状态栏?

时间:2013-04-13 06:26:34

标签: android xml user-interface relativelayout

我是Android开发的新手。我正在为我的Android应用程序制作UI。现在,mdpi屏幕的高度为480px。所以我设计我的UI在mdpi屏幕上的高度为480px。但由于状态栏在设备顶部占用了一些空间,因此RelativeLayout中的一些ImageView重叠。如何补偿状态栏占用的空间?因为对于不同的屏幕,状态栏将具有不同的大小,而在平板电脑中,状态栏可能甚至不在顶部。我很困惑,帮忙!

编辑:XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:theme="@android:style/Theme.Black.NoTitleBar" >

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/imageView1"
        android:clickable="false"
        android:contentDescription="@string/p"
        android:scaleType="center"
        android:src="@drawable/volbar" />

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:clickable="false"
        android:contentDescription="@string/p"
        android:scaleType="center"
        android:src="@drawable/base" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:contentDescription="@string/p"
        android:scaleType="center"
        android:src="@drawable/head" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="33dp"
        android:layout_marginRight="19dp"
        android:text="@string/press_to_update" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/imageView2"
        android:clickable="false"
        android:contentDescription="@string/p"
        android:scaleType="center"
        android:src="@drawable/frag1"
         />

</RelativeLayout>

4 个答案:

答案 0 :(得分:2)

在Relativelayout中,您使用了match_parent / wrap_content。所以它适合屏幕。但是你已经指定你在mdpi的屏幕上为480px设计了ui。 由于目前尚不清楚如何在mdpi屏幕上设计ui到480px。我想,可能使用了Image View中使用的drawables,它适合mdpi屏幕的480 px。 可拉伸物的比例应为3:4:6:8

例如

lpdi:mdpi:hdpi:xhdpi = 3:4:6:8

例如,如果您将mdpi的图像保留为40px 然后,对于ldpi = 30 px,hdpi = 60px,xhdpi = 80px。

答案 1 :(得分:0)

根据Supporting Multiple Screens Best Practices,您应该设计布局以展开或收缩以填充可用空间。在手机上,最重要的部分是确保您的内容水平适合(如果需要)垂直滚动。如果您需要在布局中插入比设备有空间更多垂直内容,则可以添加ScrollView

答案 2 :(得分:0)

请勿尝试将高度设置为特定大小。尽可能使用“wrap_content”或“match_parent”作为“layout_height”的值。

如果您觉得内容高于可用的屏幕高度,则需要使用ScrollView作为内容的容器。

如果您觉得内容总是适合可用的屏幕高度,那么您只需使用带有layout_height =“match_parent”的容器(如RelativeLayout)。

如果您有特定的布局需要帮助,可以发布XML。

答案 3 :(得分:0)

正如其他用户建议的那样,您不应使用wrap_contentmatch_parent对特定高度进行硬编码。

如果您仍想按照这种方式行事,为什么不通过ActionBar的尺寸减少RelativeLayout的高度?在Android 4.0+中,默认高度为48dip,横向为40dp,sw600dp为56dp。您还可以通过编程方式在活动中调用getActionBar().getHeight()。有关ActionBar外观的更多信息,请参阅this link