Android:如何使RelativeLayout填满整个屏幕宽度?

21

我正在创建一个Android应用程序,其中包含一个主要的RelativeLayout和一些LinearLayout。

现在我遇到这个问题。当将项目拖动到编辑器中,比如一个LinearLayout时,它不能适应屏幕的整个宽度。我该如何解决这个问题?这是我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:gravity="fill"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<LinearLayout
    android:id="@+id/itemDetailLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:orientation="vertical" 
    android:fillViewport="true" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/itemImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minHeight="40dp"
            android:minWidth="40dp"
            android:src="@drawable/ic_launcher" />

        <TextView
            android:id="@+id/itemName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="Name"
            android:textAppearance="?android:attr/textAppearanceMedium" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:fillViewport="true" >

        <TextView
            android:id="@+id/itemRecentHigh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Recent High" />

        <TextView
            android:id="@+id/itemRecentLow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Recent Low" />

        <TextView
            android:id="@+id/itemAverage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Average" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:id="@+id/listViewLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/itemDetailLayout"
    android:layout_marginTop="10dp"
    android:fillViewport="true"
    android:gravity="fill_horizontal"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/searchListView"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true" >

    </ListView>
</LinearLayout>

添加了一张截图以获得更多信息。 添加了蓝色背景以增加对比度。

http://i.stack.imgur.com/tPxsE.png


蓝色部分与“屏幕末端”的间隔。在返回按钮和主页按钮所在的部分的两侧和上方。 - MrMartinos
6个回答

21

替换这个:

   android:layout_width="wrap_content"
   android:layout_height="wrap_content"

随着

   android:layout_width="match_parent"
   android:layout_height="wrap_content"

把它放到你的LinearLayout中或从主要的RelativeLayout中删除所有的内边距。


3
去除填充后,线性布局将适应设备的整个屏幕。

1

尝试

<LinearLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical>
   // Other views within the linear layout
</LinearLayout>

我猜你在使用Eclipse。个人而言,我讨厌Eclipse的图形编辑器,通常会直接编写XML代码,因为使用编辑器真的很麻烦。


我不明白你想要的是蓝色部分和屏幕末端之间的空间。如果你能解释一下,我也可以解决这个问题。 - EdmDroid

1
在返回按钮和主页按钮所在的区域上方和两侧的蓝色部分与“屏幕末端”的间距。
从根RelativeLayout中删除填充。

1
不要使用fill_parent,因为它已经被弃用。 而是设置你的RelativeLayout。
android:layout_width="fill_parent"
android:layout_height="fill_parent"

接下来,对于你想要填满屏幕的列表视图,你可以设置这些标签。

android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"

通过这样做,您告诉XML,您希望您的ListView在以前版本的Android中使用fill_parent所做的操作。
此致敬礼!

0
你应该尝试类似以下的代码:
<LinearLayout
    android:id="@+id/itemDetailLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
     >

...


</LinearLayout>

我的意思是你应该这样做:

android:layout_width="fill_parent"

如果您想让每个LinearLayout的宽度都填满父容器,请使用fill_parent。

fill_parent表示视图希望与其父容器一样大,如文档中所述。

请给我一些反馈意见。

希望这有所帮助。


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