2014-07-08 56 views
0

我有两个列表中的LinearLayout,我希望他们能够根据自己的内容分享它们之间的空间,机器人2列表视图WRAP_CONTENT

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/page_vierge" 
android:orientation="vertical" 

android:padding="5dp"> 



<ListView 
    android:id="@+id/list_amis_fb" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp" 
    android:cacheColorHint="#00000000" 
    android:divider="#00000000" 
    android:dividerHeight="0.5dp" 
    android:padding="5dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="40dp" 
    android:layout_gravity="center" 
    android:textSize="20sp" 
    android:text="Amis "/> 

<ListView 
    android:id="@+id/list_amis" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp" 
    android:cacheColorHint="#00000000" 
    android:divider="#00000000" 
    android:dividerHeight="0.5dp" 
    android:padding="5dp" /> 
</LinearLayout> 

看图片 enter image description here

1:如果如果该列表1是小和列表2含量为较长

2:如果如果列表2是小和列表1内容较长

3:2列表很长

在我的代码中,当列表1很长时,列表2是不可见的!

帮助。

+0

从不给列表视图高度WRAP_CONTENT。它应该始终是固定高度或MATCH_PARENT以提高性能 –

+0

,但您可以在线性布局内采用列表视图,并且可以轻松设置线性布局的权重。 –

回答

0

有3个条件 - 1:如果列表1较小而列表2较长

2:如果列表2较小而列表1较长

3:2列出很长

把玩的LinearLayout孩子(在列表视图)的layout_weight财产。

0

你可以通过增加重量特性来设置它,looke在代码下面,我已经添加了,你可以根据你的需求改变重量。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/page_vierge" 
android:orientation="vertical" 
android:weightsum="10" 
android:padding="5dp"> 



<ListView 
android:id="@+id/list_amis_fb" 
android:layout_width="fill_parent" 
android:layout_height="0dp" 
android:weight="4" 
android:layout_marginTop="10dp" 
android:cacheColorHint="#00000000" 
android:divider="#00000000" 
android:dividerHeight="0.5dp" 
android:padding="5dp" /> 

<TextView 
android:layout_width="wrap_content" 
android:layout_height="0dp" 
android:weight="2" 
android:layout_gravity="center" 
android:textSize="20sp" 
android:text="Amis "/> 

<ListView 
android:id="@+id/list_amis" 
android:layout_width="fill_parent" 
android:layout_height="0dp" 
android:weight="4" 
android:layout_marginTop="10dp" 
android:cacheColorHint="#00000000" 
android:divider="#00000000" 
android:dividerHeight="0.5dp" 
android:padding="5dp" /> 
</LinearLayout> 
如果你想第一个名单很长,那么你可以设置权重1的ListView

为“5”,设置TextView的重量为“1”和第2列表视图权重“4”。根据您的需要更改重量。

0

当您有适配器填充ListViews时,您可以简单地比较getCount()函数的结果并相应地设置layout_height属性。

public void onCreate(...) 
    ... 
    ListView list1 = (ListView)findViewById(R.id.list_amis_fb); 
    ListView list2 = (ListView)findViewById(R.id.list_amis); 

    ListAdapter list1_adapter = ... //However you get your data 
    ListAdapter list2_adapter = ... 

    int count_difference = list1_adapter.getCount() - list2_adapter.getCount(); 
    if (count_difference < 0){ 
     list1.setLayoutParams(LayoutParams.match_parent, 100); 
     list2.setLayoutParams(LayoutParams.match_parent, LayoutParams.fill_parent); 
    } 
    if (count_difference == 0) 
    { 
     ... 
    }