填充剩余空间,但也有按钮捕捉到底部

时间:2014-02-12 15:33:50

标签: android android-layout

在我的表单上,我有一个标签,一个多行文本框和一些按钮。我希望将按钮捕捉到活动的底部,并且多行文本框填充剩余的空间。

我可以让按钮捕捉到底部的唯一方法是在容器上使用android:layout_alignParentBottom,这意味着主布局必须是相对的。

但是,我可以让多行文本框填充空格的唯一方法是容器是否为线性布局并使用0dp / weight = 1.

底部的包含只是一个带按钮的水平线性布局。

有办法做到这一点吗?如下所示,我也尝试过使用Table Rows等。下面是它现在的样子截图。

enter image description here

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

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/buttonText"
            android:text="@string/subtopic_content_name"
            android:textAppearance="?android:attr/textAppearanceMedium" />
        <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content"></TableRow>

        <EditText
            android:id="@+id/editSubTopicContent"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:hint="@string/subtopic_content_hint"
            android:inputType="textMultiLine" >

            <requestFocus />
        </EditText>

    </LinearLayout>

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

        <include layout="@layout/include_edit_buttons" />
    </LinearLayout>

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

我认为这应该有效:

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical" 
    android:id="@+id/buttons">

    <include layout="@layout/include_edit_buttons" />
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:layout_above="@+id/buttons">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/buttonText"
        android:text="@string/subtopic_content_name"
        android:textAppearance="?android:attr/textAppearanceMedium" />
    <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content"></TableRow>

    <EditText
        android:id="@+id/editSubTopicContent"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:hint="@string/subtopic_content_hint"
        android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>

</LinearLayout>

说明:
不同的是,现在他首先创造了按钮。创建按钮后,您可以使用fill_parent作为其他布局(linearLayout1)的高度,他将使用剩余的空间。如果你反过来写它,他首先膨胀linearLayout1。由于布局仍为空,fill_parent将占据整个位置。然后就没有剩余的按钮了。