fill_parent vs wrap_content listview

时间:2013-06-03 12:30:08

标签: android layout

我的布局如下


| Button1 | Text1 |


的ListView


| Button2 | Text2 |


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Medium Text"
                android:id="@+id/textView" android:layout_alignBottom="@+id/button"
                android:layout_alignParentTop="true"/>
        <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/textView"/>
    </LinearLayout>
    <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:id="@+id/relativeLayout">
            <ListView
                android:id="@+id/s1ListView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

            </ListView>
       </LinearLayout>
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button2" />
    </LinearLayout>
</LinearLayout>

问题是listview位于button2和Text2之上,并隐藏了button2和text2。理想情况下,ListView应位于button2之上。如果内容在列表视图中更多,则listview会隐藏button2。 我应该改变布局中的任何内容吗?

请帮忙

5 个答案:

答案 0 :(得分:0)

您可以使用android:weightSumandroid:layout_weight设置布局,即

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
        android:weightSum="1">
    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.2">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Medium Text"
                android:id="@+id/textView" android:layout_alignBottom="@+id/button"
                android:layout_alignParentTop="true"/>
        <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/textView"/>
    </LinearLayout>
    <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:id="@+id/relativeLayout"
                    android:layout_weight="0.6">
            <ListView
                android:id="@+id/s1ListView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

            </ListView>
       </LinearLayout>
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.2">
        <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button2" />
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:0)

使用android:layout_weight为每个线性布局指定权重,并将高度设置为0 dp。

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2">
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView" android:layout_alignBottom="@+id/button"
            android:layout_alignParentTop="true"/>
    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/textView"/>
</LinearLayout>
<LinearLayout android:layout_width="wrap_content" android:layout_height="0dp"
                android:id="@+id/relativeLayout"
                android:layout_weight="0.6">
        <ListView
            android:id="@+id/s1ListView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        </ListView>
   </LinearLayout>
<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="0.2">
    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2" />
</LinearLayout>

答案 2 :(得分:0)

试试这个:我做了必要的修改

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView" android:layout_alignBottom="@+id/button"
            android:layout_alignParentTop="true"/>
    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/textView"/>
</LinearLayout>

<ListView
    android:id="@+id/s1ListView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1" >
</ListView>

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2" />
</LinearLayout>

答案 3 :(得分:0)

android:layout_weight="1"添加到封闭listview

的LinearLayout
    <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_weight="1">
        <ListView
            android:id="@+id/s1ListView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </ListView>
   </LinearLayout>

答案 4 :(得分:0)

谨防使用layout_weight来实现此类布局。因为layout_weight更多的是解决方案而非解决方案。运行代码layout_weight后,您会看到效果,它会为您的顶部和底部布局提供比实际需要更多/更少的空间。

使用RelativeLayout 更好的选项。您可以使用以下xml来实现所需的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout
            android:id="@+id/top_layout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Medium Text"
                android:id="@+id/textView" android:layout_alignBottom="@+id/button"
                android:layout_alignParentTop="true"/>
        <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button" android:layout_alignParentTop="true"       android:layout_toRightOf="@+id/textView"/>
    </LinearLayout>
    <LinearLayout
            android:id="@+id/bottom_layout"
            android:layout_alignParentBottom="true"       
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button2" />
    </LinearLayout>

    <LinearLayout
            android:layout_below="top_layout"
            android:layout_above="bottom_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/relativeLayout">
            <ListView
                android:id="@+id/s1ListView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            </ListView>
    </LinearLayout>
</RelativeLayout>
相关问题