0

我有以下带有 a 的布局ListView,它延伸到父容器的底部,即使我已经指定它应该wrap_content

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="7dp">
    <TextView
        android:id="@+id/lblLogs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="System Logs"
        android:textStyle="bold" />
    <ListView
        android:id="@android:id/list"
        android:layout_below="@id/lblLogs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btnEmailLogs"
        android:text="Email Logs"
        android:layout_alignParentBottom="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_centerInParent="true" />
</RelativeLayout>

这导致Button底部的 与 重叠ListView,如下所示:

在此处输入图像描述

如何防止 ListView 一直到底部,使按钮不会重叠?

4

4 回答 4

3

尝试在列表视图中使用这个

  android:layout_above="@id/btnEmailLogs"
于 2013-09-05T13:27:43.757 回答
2

解决方案是将布局更改为LinearLayout并添加android:layout_weight="1"

<?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:padding="7dp"
    android:orientation="vertical">
    <TextView
        android:id="@+id/lblLogs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="System Logs"
        android:textStyle="bold" />
    <ListView
        android:id="@android:id/list"
        android:layout_below="@id/lblLogs"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
    <Button
        android:id="@+id/btnEmailLogs"
        android:text="Email Logs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
于 2013-09-05T13:27:51.430 回答
0
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="7dp">
<TextView
    android:id="@+id/lblLogs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="System Logs"
    android:textStyle="bold" />
<ListView
    android:id="@+id/list"
    android:layout_below="@id/lblLogs"
    android:layout_width="fill_parent"
    android:layout_above="@+id/btnEmailLogs"
    android:layout_height="wrap_content" />
<Button
    android:id="@+id/btnEmailLogs"
    android:text="Email Logs"
    android:layout_alignParentBottom="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_centerInParent="true" />

希望这能解决您的问题。

于 2013-09-05T13:28:09.520 回答
0

如果您尝试通过代码处理此问题::

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(width, height);

int windowheight=getWindowManager().getDefaultDisplay().getHeight();

int yourbuttonheight= get_your_button_height;

lp.height = windowheight- yourbuttonheight;

lp.addRule(RelativeLayout.ABOVE, R.id.btnEmailLogs);
listView.setLayoutParams(lp);

一切顺利 。

于 2013-09-05T13:49:44.117 回答