我有以下设置来获得带有页眉和页脚的布局。由于活动显示在对话框中,我想将顶部元素的高度设置为“wrap_content”。关于android文档,只要你将alignParentBottm =“true”设置为子元素,这就不可能了。
在另一个问题中,有人建议使用LinearLayout并以编程方式设置maxHeight。有没有其他方法可以避免alignParentBottom =“true”?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/LNL_TOP"
android:layout_width="match_parent"
android:layout_height="60dip"
android:layout_alignParentTop="true">
</LinearLayout>
<LinearLayout
android:id="@+id/LNL_BOTTOM"
android:layout_width="match_parent"
android:layout_height="60dip"
android:layout_alignParentBottom="true">
</LinearLayout>
<LinearLayout
android:id="@+id/LNL_CONTENT"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/LNL_TOP"
android:layout_above="@+id/LNL_BOTTOM">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</RelativeLayout>
以下是目前的图像,我希望布局包装内容并避免列表下的空白区域。
答案 0 :(得分:4)
使用垂直LinearLayout代替:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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:text="HEAD"/>
<!--LinearLayout containing the list here, to go with your posted code,
it would also work to just have the list outside the layout.-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="FOOT"/>
</LinearLayout>
有了这个,身体就会随着内容的增长而增长,直到没有更多的空间。然后它将开始在页脚后面(虽然这不应该是一个问题,因为你使用ListView的内容,所以视图将扩展到最大大小,然后停止,滚动将开始工作)。 / p>
答案 1 :(得分:0)
由于你说这是一个对话框窗口,从某种意义上说,如果你愿意,你可以无限期地扩展对话框的高度。可以简单地使用底部元素上的layout_marginTop
将其推到您想要的最低位置,而不是与视图的底部对齐。如果您将LNL_CONTENT
的高度设置为match_parent
,那么它将填充其间的任何空间。