1

我有一个布局如下


|按钮1 | 文本1 |


列表显示


|按钮2 | 文本2 |


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

问题是列表视图位于 button2 和 Text2 之上并隐藏了 button2 和 text2。理想情况下,ListView 应该在 button2 的上方。如果列表视图中的内容更多,那么列表视图会隐藏按钮 2,会发生什么情况。我应该更改布局中的任何内容吗?

请帮忙

4

5 回答 5

0

您可以使用android:weightSumandandroid: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>
于 2013-06-03T12:39:26.270 回答
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>

于 2013-06-03T12:39:56.400 回答
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>

于 2013-06-03T12:40:27.027 回答
0

添加android:layout_weight="1"到包含listview

    <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>
于 2013-06-03T12:40:54.093 回答
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>
于 2013-06-03T12:46:06.073 回答