两个ListView并排

时间:2011-02-09 10:09:25

标签: android listview

我有两个ListView。我需要将它们水平并排放置。但问题是 - 只能看到一个列表。 (注意:第二个列表位于布局的右侧,最多可以包含1个字符。第一个列表将展开以填充屏幕的其余部分。)

请帮帮我。

布局是这样的。

------------
|       |  |
|       |  |
|       |  |
|       |  |
|       |  |
|       |  |
|       |  |
|       |  |
|       |  |
------------

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="true" />
</LinearLayout>

Shaiful

8 个答案:

答案 0 :(得分:6)

我无法相信三年内没有人提出过这个问题。也许其他人会有这个问题。

问题是ListView在水平空间方面很贪婪。您可以使用layout_width='0dp'以及您认为最适合的layout_weight个数字来告诉它。以下是将leftListView置于¾且rightListView置于1/4的示例。我尝试过,它工作正常。

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

    <ListView
        android:id="@+id/leftListView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="2dp"
        android:layout_weight=".75" />

    <ListView
        android:id="@+id/rightListView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="2dp"
        android:layout_weight=".25" />

</LinearLayout>

另一种选择是使用相同的布局技巧但使用FrameLayouts,然后为每个ListView创建片段。它比较重,但你可能会发现片段处于遗留状态。

答案 1 :(得分:5)

我认为使用此代码它会正常工作。 你必须使用layout_weight = 0.5,事情才会完美无缺。

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginBottom="60dp"
android:layout_marginTop="60dp"
android:orientation="horizontal"
android:id="@+id/linearLayout2">
    <ListView
        android:id="@+id/sportsList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/sports_array"
        android:layout_weight="0.5"/>

    <ListView
        android:id="@+id/sportsList_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/sports_array"
        android:layout_weight="0.5"/>
</LinearLayout>

因此,基本上在线性布局中使用两个列表视图,并将每个布局的权重赋予0.5。我认为这有帮助。

答案 2 :(得分:1)

我建议使用属性LinearLayout的{​​{1}} 然后将带有android:orientation="horizontal" 2 LinearLayouts放入横向的。{ 现在用你的东西填充一次垂直。

有关更多信息,请查看here :)

希望这有帮助!

修改
试试这个:

android:orientation="vertical"

答案 3 :(得分:1)

你的第一个LinearLayout说明了高度和宽度的fill_parent,所以它将占用所有空间。相反,使用设置为水平的单个LinearLayout,然后将两个ListView放在那里。高度应该是wrap_content。可以根据需要设置宽度(尽管不是fill_parent),您可以使用minWidth和layout_weight更好地指定。

答案 4 :(得分:0)

尝试使用相对布局或表格布局作为根布局,然后将2个列表视图定位为根目录的子项。

答案 5 :(得分:0)

将两者放在一个水平的LinearLayout中,就像几个人建议的那样。对于左侧的列表,将layout_width设置为0,将layout_weight设置为1;对于右侧的列表,将layout_width设置为wrap_content,将layout_weight设置为0.

答案 6 :(得分:0)

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


        <ListView

            android:id="@+id/list_view2"
            android:layout_width="100dp"
            android:layout_height="475dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true" />

        <ListView
        android:id="@+id/list_view"
        android:layout_width="306dp"
        android:layout_height="match_parent"
        android:layout_alignParentEnd`enter code here`="true"
        android:layout_alignParentRight="true" />

</LinearLayout>

答案 7 :(得分:-1)

确定。我看到线程已经死了,但我知道该怎么做。

我的布局xml文件:

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


    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" >

        <RelativeLayout
            android:id="@+id/relativeLayout1"
            android:layout_width="55dp"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" >
        </RelativeLayout>

        <ListView
            android:id="@+id/ListView01"
            android:layout_width="192px"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_toRightOf="@+id/relativeLayout1"
            android:layout_weight="1" >

        </ListView>
    </RelativeLayout>



    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" >

        <RelativeLayout
            android:id="@+id/relativeLayout2"
            android:layout_width="55dp"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true" >
        </RelativeLayout>


        <ListView
            android:id="@+id/ListView02"
            android:layout_width="192px"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_toLeftOf="@+id/relativeLayout2"
            android:layout_weight="1" >

        </ListView>
    </RelativeLayout>

</LinearLayout>

我的活动代码:

 @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.main);    
        ListView lv1=(ListView)this.findViewById(R.id.ListView01);  
        ListView lv2=(ListView)this.findViewById(R.id.ListView02);
        File fCurrDirOne = new File ("/");
        File fCurrDirTwo = new File ("/");
        String[] mListOfFilesOne = fCurrDirOne.list();
        String[] mListOfFilesTwo = fCurrDirTwo.list();
        ArrayAdapter list1 = new ArrayAdapter<String>(          
                this, R.layout.itemlistview,mListOfFilesOne);  
        ArrayAdapter list2 = new ArrayAdapter<String>(          
                this, R.layout.itemlistview,mListOfFilesTwo);  
        lv1.setAdapter(list1);  
        lv2.setAdapter(list2);  
    }  

享受)

P.S。您应该为列表项创建layuot,我的名为itemlistview.xml,您可以使用android.R.layout.simple_list_item_1作为默认值。

我的itemlistview.xml文件

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20dp" >

</TextView>