在 Android 布局中显示 3 个等高的可滚动 ListView

Show 3 scrollable ListViews of equal height in Android Layout

我试图在一个屏幕上的 Android 布局中显示三个不同的垂直部分,每个占据屏幕的三分之一,一个在顶部,一个在中间,一个在底部.每个部分有一个TextView和一个ListViewListViews可以滚动,这样你就可以看到所有的项目,但整个页面不会移动。我尝试将每个 TextViewListView 放在 LinearLayout 中,并将每个 LinearLayout 的高度设置为屏幕总高度的三分之一,但第一个 ListView 只是显示了里面的所有项目,占据了大部分屏幕,其他部分都被下推了。我也尝试使用 layout_weights,但由于某种原因它不起作用。 (编辑:设置 layout_weight="1" 最终起作用了,我不确定我第一次做错了什么)我怎样才能让它起作用,或者有更好的方法来解决这个问题吗?

<LinearLayout
  android:layout_width="match_parent" android:layout_height="match_parent"
  android:orientation="horizontal" >

  <ListView android:layout_width="0dp" android:layout_weight="1" 
    android:layout_height="match_parent" android:background="#FF0000"/>

  <ListView android:layout_width="0dp" android:layout_weight="1" 
    android:layout_height="match_parent" android:background="#00FF00">

  <ListView android:layout_width="0dp" android:layout_weight="1" 
    android:layout_height="match_parent" android:background="#0000FF">

</LinearLayout>

这将为您提供三个等宽的列:要使其成为行,请将方向更改为垂直并为每个列表视图交换 layout_heightlayout_width 的值。如果您需要添加 TextViews,则必须使用相同的 width/height/weight 将此代码中的每个列表视图设为 RelativeLayout LinearLayoutFrameLayout并安排 ListViewTextView 在里面品尝。要最有效地执行此操作,请使用 Framelayout 并在列表视图上使用边距以使其与 TextView 偏移。您可以通过在 TextView.

中使用 layout_gravityTextView 相对于 ListView 放置在 FrameLayout

即(交换第一个"column"):

<FrameLayout android:orientation="vertical" android:layout_width="0dp"    
  android:layout_weight="1" android:layout_height="match_parent"   
  android:background="#FF0000">

  <TextView android:text="Column!" android:background="#3Eff0000"
    android:layout_height="40dp" android:layout_width="match_parent">

  <ListView android:layout_marginTop="48dp" android:layout_height="match_parent"      
    android:layout_width="match_parent" android:background="#8Aff0000"/>

</FrameLayout>

使用这个:

<?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="horizontal"
    android:weightSum="3">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#ff89ff91">


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="#1"
            android:id="@+id/textView"
            android:padding="5dp"
            android:gravity="center" />

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView"
            android:layout_below="@+id/textView" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#ffff8177">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="#2"
            android:id="@+id/textView2"
            android:padding="5dp"
            android:gravity="center" />

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView2"
            android:layout_below="@+id/textView2" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#ffffe85d">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="#3"
            android:id="@+id/textView3"
            android:padding="5dp"
            android:gravity="center" />

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView3"
            android:layout_below="@+id/textView3" />
    </RelativeLayout>
</LinearLayout>