我该如何修复这个RelativeLayout?

时间:2012-04-08 13:16:46

标签: android layout

我希望看到以下布局工作:

--------------------------
| -----------            |
| |TextView1|            |
| -----------            |
| ---------------------- |
| |EditText1           | |
| ---------------------- |
| -----------            |
| |TextView2|            |
| -----------            |
| ---------------------- |
| |EditText2           | |
| ---------------------- |
| -----------            |
| |TextView3|            |
| -----------            |
| ---------------------- |
| |                    | |
| |                    | |
| |                    | |
| |      ImageView     | |
| |                    | |
| |                    | |
| |                    | |
| |--------------------| |
|   --------- --------   |
|   |Button1||Button2|   |
|   --------- --------   |
| ---------------------| |
| |     ButtonBar      | |
| ---------------------- |
|------------------------|

我的问题:我不能让Button1和Button2在这个布局中工作。它们要么位于隐藏在ButtonBar后面的ImageView之下,要么在ImageView的底部和ButtonBar的顶部之间缩小。

当前的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/footer" >

    <TextView
        android:id="@+id/textPostUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="user" />

    <EditText
        android:id="@+id/editPostUser"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textPostUser"
        android:hint="user"
        android:maxLength="40" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textPostComment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/editPostUser"
        android:text="comment" />

    <EditText
        android:id="@+id/editPostComment"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textPostComment"
        android:hint="comment"
        android:maxLength="200"
        android:maxLines="3" >
    </EditText>

    <TextView
        android:id="@+id/textPostCharacterCount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/editPostComment"
        android:text="characters"
        android:textSize="5pt" />

    <ImageView
        android:id="@+id/imagePostResult"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/textPostCharacterCount"
        android:src="@drawable/camera_icon" />

    <Button
        android:id="@+id/buttonPostRotateLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@id/imagePostResult"
        android:text="left" />

    <Button
        android:id="@+id/buttonPostRotateRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@id/imagePostResult"
        android:layout_toRightOf="@id/buttonPostRotateLeft"
        android:text="right" />
</RelativeLayout>

<LinearLayout
    android:id="@+id/footer"
    style="@android:style/ButtonBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/buttonPostSave"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="save" />
</LinearLayout>

</RelativeLayout>

如何让左/右按钮显示在imageview下方和按钮栏上方? 我想至少将fill_parent保持在ImageView的高度/宽度,因为它在不同的分辨率下可以很好地缩放。

3 个答案:

答案 0 :(得分:1)

为什么不将两个按钮放在水平的LinearLayout中?

答案 1 :(得分:1)

您的ImageView设置为fill_parent,因此下面的按钮没有剩余空间。您可以切换按钮和图像视图,以便在已包含按钮时,imageview占用所有剩余空间:

    <Button
        android:id="@+id/buttonPostRotateLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="left" />

    <Button
        android:id="@+id/buttonPostRotateRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/buttonPostRotateLeft"
        android:text="right" />

    <ImageView
        android:id="@+id/imagePostResult"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/buttonPostRotateLeft"
        android:layout_below="@id/textPostCharacterCount"
        android:src="@drawable/camera_icon" />

答案 2 :(得分:0)

您的按钮设置为android:layout_alignParentBottom="true",以及线性布局。后者将隐藏前者,因为它在xml代码中是最后一个。

尝试将按钮置于线性布局中,并将其对齐在页脚android:layout_above="@+id/footer"

上方