android无法在listview下放置linearlayout

时间:2013-01-22 09:33:21

标签: android android-layout

我想在listview下面放一个linearlayout,如果我把它放在listview上面我得到一个异常并且活动突然停止工作,当我把它放在listview下面它没有出现时,我做错了什么?

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



    <ListView
        android:id="@+id/lvRestaurants"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

        <LinearLayout
        android:id="@+id/llButtons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bDone"
            android:layout_width="153dp"
            android:layout_height="match_parent"
            android:text="Done" />

        <Button
            android:id="@+id/bCancel"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Cancel" />
    </LinearLayout>

</LinearLayout>

4 个答案:

答案 0 :(得分:10)

android:layout_weight=1添加到ListView。

没有出现其他布局的原因是因为您的列表视图占据了父布局中的所有位置(android:layout_height="fill_parent"

答案 1 :(得分:4)

我建议改用 RelativeLayout 。使用 LinearLayout 和特别是 android:layout_weight 是昂贵的性能。这种布局可以满足您的需求。关键是 android:layout_alignParentBottom andoid:layout_above 属性。试试看。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/llButtons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bDone"
            android:layout_width="153dp"
            android:layout_height="match_parent"
            android:text="Done" />

        <Button
            android:id="@+id/bCancel"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Cancel" />
    </LinearLayout>

    <ListView
        android:id="@+id/lvRestaurants"
        android:layout_above="@id/llButtons"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

</RelativeLayout>

答案 2 :(得分:0)

您可以尝试使用weight概念。 我在您的代码中做了一些更改

<?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="match_parent"
    android:orientation="vertical"
    android:weightSum="10" >

    <ListView
        android:id="@+id/lvRestaurants"
        android:layout_weight="8"
        android:layout_width="fill_parent"
        android:layout_height="0dip" >
    </ListView>

    <LinearLayout
        android:layout_weight="2"
        android:id="@+id/llButtons"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bDone"
            android:layout_width="153dp"
            android:layout_height="fill_parent"
            android:text="Done" />

        <Button
            android:id="@+id/bCancel"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:text="Cancel" />
    </LinearLayout>

</LinearLayout>

根据您的要求进行更改

答案 3 :(得分:0)

要节省开销,请使用 layout_weight =“1”提供listView

    <ListView
        android:layout_weight="1"    // The MagicLine
        android:id="@+id/myListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

你和LinearLayout的重力=“底部”

    <LinearLayout
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:orientation="horizontal">

 // here will be views, you want to put with in your LinearLayout

    </LinearLayout>

此外,您可以将LinearLayout放在列表视图下方,使用Relativelayout。

这是一个sampleStructure。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/myListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="constantHeightofLinearLayout" /> // here the constant height of the linear Layout or buttons, should be inserted

    <LinearLayout
        android:layout_alignParentBottom="true" //this is the line, that would put this linearLayout beneath your Listview
        android:layout_height="constantHeight" // this height should be the marginBottom of ListView
        android:gravity="bottom"
        android:orientation="horizontal">

 // here will be views, you want to put with in your LinearLayout

    </LinearLayout>

</RelativeLayout>