【问题标题】:relativeLayout crisis相对布局危机
【发布时间】:2012-09-21 00:27:28
【问题描述】:

所以我想要一个在屏幕顶部有 2 个按钮的线性布局,在底部有一个线性布局,它也有两个按钮,中间有一个 listView。我遇到的问题是,如果 listView 太大,底部的 linearLayout 会被覆盖。我告诉 listView wrap_content 因为它是 layout_height 因为我想这样做......但我几乎肯定这就是底部 linearLayout 没有显示的原因。 代码如下:

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

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/topLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/importClasses"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            >
        </Button>

        <TextView
            android:id="@+id/title"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/Title"
            android:layout_weight="1"
            android:gravity="center_horizontal|center_vertical|center"
             >
        </TextView>

        <Button
            android:id="@+id/addClasses"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             />
      </LinearLayout>

    <ListView
        android:id="@+id/classList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/topLayout" >

    </ListView>

    <LinearLayout
        android:id="@+id/bottomLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/classList"
         >

        <Button
            android:id="@+id/Assignments"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            >
        </Button>

        <Button
            android:id="@+id/flashCards"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             />
    </LinearLayout>

</RelativeLayout>

有什么建议吗?

【问题讨论】:

    标签: android android-linearlayout android-relativelayout


    【解决方案1】:

    classList 设置为高于bottomLayout 并低于topLayout

    还将bottomLayout 设置为layout_alignParentBottom="true"topLayout layout_alignParentTop="true"

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    
    <LinearLayout
        android:id="@+id/topLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" android:layout_alignParentTop="true">
    
        <Button
            android:id="@+id/importClasses"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            >
        </Button>
    
        <TextView
            android:id="@+id/title"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/Title"
            android:layout_weight="1"
            android:gravity="center_horizontal|center_vertical|center"
             >
        </TextView>
    
        <Button
            android:id="@+id/addClasses"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             />
      </LinearLayout>
    
    
    <ListView
        android:id="@+id/classList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bottomLayout"
        android:layout_below="@+id/topLayout" >
    
    </ListView>
    
    <LinearLayout
        android:id="@+id/bottomLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">
    
        <Button
            android:id="@+id/Assignments"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            >
        </Button>
    
        <Button
            android:id="@+id/flashCards"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             />
    </LinearLayout>
    

    【讨论】:

    • 行得通,谢谢。太奇怪了,为什么我必须将它与 parentTop 和 bottom 对齐...我想我只需要记住这一点,谢谢!
    • 当然。您需要分配顶部和底部的原因是,RelativeLayout 项目依赖于锚点。在不将布局项锚定到特定位置的情况下,它们都将从屏幕的左上角开始并相互重叠。
    【解决方案2】:

    这应该可以,但您可能需要将您的 RelativeLayout 更改为 LinearLayout

    并将ListViewlayout_height 更改为0dp 并添加layout_weight="1"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      相关资源
      最近更新 更多