2014-07-08 58 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) 
    { 
     ... 
    }