如何在布局中使用两个listview?

时间:2012-12-06 05:44:11

标签: android android-layout listview scrollview

有如下布局。两个listView和带有图像和文本的标题。底部有按钮。我的问题是,如果第一个列表视图是高度,则不会出现其他列表视图和按钮。我想制作一个包含标题和ListView的scrollview,但是没有用。 我能怎么做? 感谢

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:src="@drawable/icon" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:layout_marginLeft="5dp"
            android:text="@string/Dep"
            android:textColor="@color/white" />

    </LinearLayout>
</LinearLayout>

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/Orange"
    android:gravity="center"
     >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:src="@drawable/icon2" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textSize="18sp"
            android:layout_marginLeft="5dp"
            android:textColor="@color/white" />
    </LinearLayout>
</LinearLayout>

<ListView
    android:id="@+id/listView2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
</ListView>

 <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center"
    android:layout_margin="10dp" >

    <Button
        android:id="@+id/btn1"
        android:layout_width="0dp"
        android:layout_height="55dp"
        android:layout_margin="5dp"
        android:layout_weight=".3"
        android:gravity="bottom|center_horizontal"
        android:textSize="16sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="0dp"
        android:layout_height="55dp"
        android:layout_margin="5dp"
        android:layout_weight=".7"
        android:text="@string/Continue"
        android:textColor="@color/white"
        android:textSize="24sp"
        android:textStyle="bold" />
</LinearLayout>

5 个答案:

答案 0 :(得分:2)

ListView是android中的可滚动视图,如果要在单个屏幕上包含两个Listviews,可以通过修复这些视图的父级高度来完成。例如,在下面的代码中,我修复了包含listviews的linearlayout的高度,你可以使用权重来根据屏幕高度排列所有视图。

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/icon" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:layout_marginLeft="5dp"
                android:text="@string/Dep"
                android:textColor="@color/white" />

        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dip"
        >
    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </ListView>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/Orange"
        android:gravity="center"
         >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/icon2" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:textSize="18sp"
                android:layout_marginLeft="5dp"
                android:textColor="@color/white" />
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dip"
        >
    <ListView
        android:id="@+id/listView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </ListView>
    </LinearLayout>
     <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_margin="10dp" >

        <Button
            android:id="@+id/btn1"
            android:layout_width="0dp"
            android:layout_height="55dp"
            android:layout_margin="5dp"
            android:layout_weight=".3"
            android:gravity="bottom|center_horizontal"
            android:textSize="16sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="0dp"
            android:layout_height="55dp"
            android:layout_margin="5dp"
            android:layout_weight=".7"
            android:text="@string/Continue"
            android:textColor="@color/white"
            android:textSize="24sp"
            android:textStyle="bold" />
    </LinearLayout

>

答案 1 :(得分:0)

通过这种方式你可以使用两个listview ...

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp" >

     <ListView
        android:id="@+id/lst_payment"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="5dp"
        android:scrollbars="none" >

    </ListView>

    <ListView
        android:id="@+id/lst_bank"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_below="@+id/lst_payment"
        android:layout_marginTop="5dp"
        android:fadingEdge="none"
        android:scrollbars="none" >
    </ListView>
</RelativeLayout

答案 2 :(得分:0)

未显示第二个列表视图的原因是您尚未设置“线性”布局的方向。将其方向设置为垂直,它将出现。

答案 3 :(得分:0)

我不知道你为什么在一个活动中需要两个列表视图,但上面的代码只有在你没有指定listview高度时才有帮助。我相信你可以使用MergeAdpter take a look here

制作一个更加华丽和酷炫的列表视图

答案 4 :(得分:0)

我解决了我的问题如下:

我在listview的活动中使用了这段代码:

HelperScrollView.getListViewSize(listview);

这是班级:

public class HelperScrollView 
{
public static void getListViewSize(ListView myListView) {
    ListAdapter myListAdapter = myListView.getAdapter();
    if (myListAdapter == null) {
        //do nothing return null
        return;
    }
    //set listAdapter in loop for getting final size
    int totalHeight = 0;
    for (int size = 0; size < myListAdapter.getCount(); size++) {
        View listItem = myListAdapter.getView(size, null, myListView);
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }
  //setting listview item in adapter
    ViewGroup.LayoutParams params = myListView.getLayoutParams();
    params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount()));
    myListView.setLayoutParams(params);

}

}

您可以将listview用于布局中的scrollview。