0

我正在尝试这样设计我的用户界面: 在此处输入图像描述

问题是当我添加 ListView 并将其宽度设置为 match_parent 时,它使用根布局并占用整个屏幕的宽度,即使它被包裹在另一个布局中,它只占用宽度的 1/4。有人可以建议我一种方法来完成图片上绘制的内容吗?我还读到嵌套的 layout_weight 不利于性能,我应该使用完全不同的东西吗?

XML 文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="3"> 
    </RelativeLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" 
            android:layout_weight="13">

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

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:layout_weight="1">

            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>
4

2 回答 2

1

看起来你的 s 太多了,而你拥有的 s 却ViewGroup很少View。您可能可以更改这部分

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:layout_weight="13">

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

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_weight="1">

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />

    </LinearLayout>

类似于

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1" >

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

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />

    </LinearLayout>

我认为不需要额外LinearLayout的。如果您需要某些属性,您也可以将其更改为LinearLayouta或RelativeLayoutButtonlayout_alignParentBottomlayout_above

于 2013-10-16T18:43:54.273 回答
0

将您的右侧视图更改为 a RelativeLayout,将您的按钮设置为您右侧视图的底部,然后 在您的属性android:layout_above="@id/button1"上设置该属性ListView将允许您ListView填充按钮未占用的剩余空间。我还删除了您拥有的许多不需要的嵌套布局。

不要忘记,在使用布局权重时,您需要根据LinearLayout. 这可能是您的 ListView 占据整个屏幕的原因。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >

    <RelativeLayout
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="3" />

    <RelativeLayout
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="1" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:text="Button" />

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@id/button1" />
    </RelativeLayout>

</LinearLayout>
于 2013-10-16T18:41:55.250 回答