2

我想在列表视图下放置一个线性布局,如果我将它放在列表视图上方,我会遇到异常并且活动突然停止工作,当我将它放在列表视图下时它不会出现,我做错了什么?

<?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

4 回答 4

10

添加android:layout_weight=1到您的列表视图。

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

于 2013-01-22T09:37:38.137 回答
4

我建议改用RelativeLayout。使用LinearLayout和特别是android:layout_weight在性能方面是昂贵的。此布局可满足您的需求。关键是android:layout_alignParentBottomandoid: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>
于 2013-01-22T10:27:14.600 回答
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>

根据您的要求进行更改

于 2013-01-22T09:44:52.603 回答
0

为了节省开销,为 listView 提供layout_weight="1"

    <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。

这是一个示例结构。

<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>
于 2016-01-05T16:10:56.513 回答