alignParentBottom无效

时间:2015-09-04 07:29:40

标签: android android-layout android-relativelayout

以下是我想要的

enter image description here

以下是我的XML代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="2dp"
tools:context=".MainActivity"
android:orientation="horizontal"
>
<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="2"
    >
    <!--style="@style/sub_linearlayout_in_listview_phonedescriptiosn"-->
</RelativeLayout>

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    >
    <!--Header Right Pane-->
    <RelativeLayout
        android:id="@+id/header_rightpane"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:padding="5dp"
        >
        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@drawable/divider"
            android:layout_alignParentBottom="true"
            />
        <TextView
            android:id="@+id/textview_order_no"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:padding="5dp"
            android:text="Order # QW1233"
            />
    </RelativeLayout>
    <!--Footer Right Pane-->
    <RelativeLayout
        android:id="@+id/footer_rightpane"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:padding="5dp"
        >
        <View
            android:id="@+id/divider_footer_rightpane"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@drawable/divider"
            android:layout_alignParentTop="true"
            />
        <TextView
            android:id="@+id/textview_total"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Total"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/divider_footer_rightpane"
            />
        <TextView
            android:id="@+id/textview_total_value"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Rs. 500.00"
            android:layout_alignParentRight="true"
            android:layout_below="@id/divider_footer_rightpane"
            />
        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@drawable/divider"
            android:layout_below="@id/textview_total"
            />
    </RelativeLayout>
    <!--Mid-Content Right Pane-->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/header_rightpane"
        android:layout_above="@id/footer_rightpane"
        android:padding="5dp"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="ListView will be here"
            />
    </RelativeLayout>
</RelativeLayout>

但是它不起作用,我得到以下输出

enter image description here

说明 -

有一个左窗格和右窗格

内部右侧窗格 - &gt;页眉和页脚之间有“页眉相对布局”,“页脚相对布局”和“中心相对布局”。

现在,“标题相对布局”将所有空间都移到底部,如图像所示,但它不应占用所有空间直到底部

原因“标题相对布局”占据了所有空间,直到底部是因为这个,

<View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@drawable/divider"
            android:layout_alignParentBottom="true"
            />

此视图位于“标题相对布局”内,我正在使用

android:layout_alignParentBottom="true"

由于这条线,它占据了所有的空间,直到底部

如果我删除上面的空格,那么我正在获得正确的布局,但是为什么这条线不能在这里工作?我在这里写这一行,因为我希望分隔线(View)位于“Header Relative Layout”的底部。这是一项要求。

2 个答案:

答案 0 :(得分:1)

不要在此部分中使用嵌套布局。它不是必需的,可能会导致性能问题。只需使用layout_belowlayout_above即可实现您的目标:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
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">

<TextView
    android:id="@+id/textview_order_no"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:padding="5dp"
    android:text="Order # QW1233"
    android:textSize="20sp" />

<View
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:layout_below="@+id/textview_order_no"
    android:background="@drawable/divider" />

<View
    android:id="@+id/divider_footer_top_rightpane"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@drawable/divider"
    android:layout_above="@+id/textview_total"
    />

<TextView
    android:id="@+id/textview_total"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Total"
    android:layout_alignParentLeft="true"
    android:layout_above="@id/divider_footer_bottom_rightpane" />

<TextView
    android:id="@+id/textview_total_value"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Rs. 500.00"
    android:layout_alignParentRight="true"
    android:layout_above="@id/divider_footer_bottom_rightpane" />

<View
    android:id="@+id/divider_footer_bottom_rightpane"
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:background="@drawable/divider"
    android:layout_alignParentBottom="true"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="ListView will be here" />

</RelativeLayout>

请注意,我只使用了黑色代替@drawable/divider

enter image description here

检查Documentation是否有简短的解释:

  

请注意,您不能在大小之间具有循环依赖关系   RelativeLayout及其子女的位置。例如,你   不能将RelativeLayout的高度设置为WRAP_CONTENT和a   子项设置为ALIGN_PARENT_BOTTOM。

答案 1 :(得分:0)

我知道,相对布局有优势,但对于布局而言,它们只是一行,它们通常不是最佳解决方案。在这种情况下,线性布局将是一个更好的解决方案。

尝试使用标题:

<!--Header Right Pane-->
<LinearLayout
  android:id="@+id/header_rightpane"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentTop="true"
  android:orientation="vertical"
  android:padding="5dp"
  android:gravity="center"
  >

  <TextView
    android:id="@+id/textview_order_no"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:text="Order # QW1233"
    android:textSize="20sp"
    />

  <View
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:background="@drawable/divider"
    />
</LinearLayout>