LinearLayout中的ListView爆发(Android)

时间:2012-07-26 10:33:35

标签: android listview android-linearlayout

现在已经挣扎了一段时间。我有一个由各种LinearLayouts组成的布局XML,具有单独的权重。最终结果看起来像这样..

Image of Main activity screen

不介意颜色,只是为了看到断点。无论如何,在终端/原点等下面,LinearLayout是一个使用自定义适配器填充的ListView。数据加载正常,但然后listView“突破”LinearLayout,占据了大部分页面

enter image description here

(不介意颜色,只是为了看到断点......)

即。它流过上方和下方的视图。

我的XML如下:

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
tools:ignore="HardcodedText" >

<RelativeLayout
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.2"
    android:background="#FF0000"
    android:gravity="right" >

    <Button
        android:id="@+id/update"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:onClick="getFlightInfo"
        android:text="Refresh" />
</RelativeLayout>

<LinearLayout
    android:id="@+id/table_header"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="0.4"
    android:background="#FFFFFF"
    android:weightSum="1" >

    <TextView
        android:id="@+id/header_cell1"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="@string/cell_1_weight"
        android:gravity="center_vertical"
        android:paddingLeft="5dp"
        android:paddingRight="12dp"
        android:text="@string/table_header_terminal"
        android:textSize="11dp" />

    <TextView
        android:id="@+id/header_cell2"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="@string/cell_2_weight"
        android:gravity="center_vertical"
        android:paddingRight="12dp"
        android:text="@string/table_header_origin"
        android:textSize="11dp" />

    <TextView
        android:id="@+id/header_cell3"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="@string/cell_3_weight"
        android:gravity="center_vertical"
        android:paddingRight="12dp"
        android:text="@string/table_header_flight"
        android:textSize="11dp" />

    <TextView
        android:id="@+id/header_cell4"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="@string/cell_4_weight"
        android:gravity="center_vertical"
        android:paddingRight="12dp"
        android:text="@string/table_header_scheduled"
        android:textSize="11dp" />

    <TextView
        android:id="@+id/header_cell5"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="@string/cell_5_weight"
        android:gravity="center_vertical"
        android:paddingRight="12dp"
        android:text="@string/table_header_status"
        android:textSize="11dp" />
</LinearLayout>

<LinearLayout
    android:id="@+id/table_list_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="3"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/list_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

<LinearLayout
    android:id="@+id/filter"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#00FF00" />

</LinearLayout>

我可能会遗漏一些明显的东西,但对于我的生活,我无法看到它。有人可以帮忙吗?

万分感谢..

4 个答案:

答案 0 :(得分:2)

这是因为你保留了LinearLayout的高度(一个包装列表视图)“wrap_content”。确定它的大小可以解决你的问题。

然后使listview的高度为“fill_parent”。

编辑:

尝试这种方式:

...

<ListView
    android:id="@+id/list_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
</ListView>

在上面的两个布局中,你使用0.2和0.4作为权重,但在较低的两个布局中,你用户3和1 ...尝试以前的方式,看看,如果它可以帮助你。也尝试制作LinearLayout的高度(一个包装列表视图)到0dip。

答案 1 :(得分:2)

也许已经晚了,但我可以帮助别人。

<?xml version="1.0" encoding="utf-8"?>

<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:orientation="vertical">

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ff0000">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:text="Content 1" />

</LinearLayout>


<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="#00ff00">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:text="Content 2" />

</LinearLayout>

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@id/linearLayout2"
    android:layout_below="@id/linearLayout1"
    android:background="#00f0f0"></ListView>

结果: Result

答案 2 :(得分:0)

好的..在咨询this post之后我想出了一个修复

  1. 删除ListView外部的LinearLayout,它是多余的。
  2. 将高度'0px'(我在网上找到)添加到ListView,确保它正确地服从android:weight参数。
  3. 希望这会有所帮助。

答案 3 :(得分:0)

  • 移除id/filter的重量。
  • ListView的权重为1,身高fill_parent
  • 删除listView的直接父级。

您错过了另一件事,就是在根目录中设置weightSum=sum_of all_child_weight。这应该可以解决问题。