2014-07-08 4 views
0

J'ai deux listes dans un LinearLayout, et je veux leur faire partager l'espace entre eux en fonction de leur contenu,android de liste 2 en hauteur de disposition linéaire 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> 

regard sur l'image enter image description here

1: si le contenu de la liste si 1 est faible et la liste 2 est plus

2: si le contenu de la liste si 2 est petite et liste 1 est plus

3: 2 listes sont longues

dans mon code lorsque la liste 1 est longue, la liste 2 est invisible !!

aide.

+0

ne donne jamais la hauteur de la vue liste en tant que WRAP_CONTENT. Il doit toujours être une hauteur fixe ou MATCH_PARENT pour l'amélioration des performances –

+0

mais vous pouvez prendre la vue liste dans la disposition linéaire et vous pouvez facilement définir le poids de la disposition linéaire. –

Répondre

1

forte textyou devrait utiliser ExpandableListview et cacher listview tête de groupe et toujours élargir le groupe pour obtenir même effet que vous voulez ... voir ici

http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/

+0

mais j'ai 2 adaptateur personnalisé pour chaque liste? – toufik3119

+0

le faire comme un et passer deux Arrylist dedans ou faire un modèle qui contient deux ArrayList et passer ce modèle à l'adaptateur – Hardik

0

Have 3 conditions- 1: si la liste 1 est petite et la liste 2 est plus longue

2: si la liste 2 est petite et la liste 1 est plus longue

3: 2 listes sont longues

jeu avec la propriété layout_weight des enfants LinearLayout (le listviews).

0

vous pouvez le définir en ajoutant la proprty de poids, regardez ci-dessous le code, j'ai ajouté en cela. Vous pouvez changer le poids selon votre requirment.

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

si vous voulez 1ère longue liste vous pouvez définir le poids du 1er listview à « 5 », réglez le poids textview à « 1 » et le poids 2ème listview à « 4 ». changez de poids en fonction de vos besoins.

0

Lorsque vous avez les cartes qui remplissent ListViews, vous pouvez simplement comparer les résultats de la fonction getCount() et définir l'attribut layout_height en conséquence.

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) 
    { 
     ... 
    } 
Questions connexes