以下是我想要的
以下是我的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>
但是它不起作用,我得到以下输出
说明 -
有一个左窗格和右窗格
内部右侧窗格 - &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”的底部。这是一项要求。
答案 0 :(得分:1)
不要在此部分中使用嵌套布局。它不是必需的,可能会导致性能问题。只需使用layout_below
和layout_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
检查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>