我能问一下你为什么要用相对论来描述这个容器吗?这似乎是一个完美的地方,只需使用一个加权中心区域(listview)的线性布局,该区域设置为在wrap_height-set页眉和页脚之后占据所有剩余区域。relativelayout对于简化包含水平和垂直元素的深度嵌套布局非常有用,但是这里的外层无论如何只包含3个垂直元素,所以使用
orientation:vertical
除非我在这里遗漏了什么。
编辑:简言之,试试这个;这会给你一个固定高度的页眉,一个环绕高度的页脚,以及占据所有剩余空间的中心区域。确保外部布局设置为
fill_parent
layout_weight="1"
. 我喜欢在使用layout weight时使用“0px”作为基本布局高度,只是为了在我回去以后重新阅读时保持清晰。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#ffffff"
>
<RelativeLayout
android:background="@drawable/top_background"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:id="@+id/top_control_bar"
> <!-- snip - inner contents unchanged -->
</RelativeLayout>
<LinearLayout
android:id="@+id/listArea"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1"
android:orientation="horizontal"
><!-- snip - inner contents unchanged -->
</LinearLayout>
<LinearLayout
android:id="@+id/bottom_control_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/top_background"
android:orientation="horizontal"
android:visibility="visible"
><!-- snip - inner contents unchanged -->
</LinearLayout>
</LinearLayout>