2012-03-14 6 views
1

J'ai une mise en page et je veux que les composants remplissent la partie restante de l'écran (en utilisant des poids). Le Listview fonctionne parfaitement.Poids imbriqués dans une mise en page

Les 2 boutons à la fin fonctionnent comme je les ai l'intention de travailler aussi, cependant je reçois un avertissement qui dit que "les poids imbriqués sont mauvais pour la performance".

Je pense que c'est un problème parce que j'ai déjà utilisé un paramètre de poids pour la liste, parce que quand je supprime la liste, l'avertissement est parti.

<?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="fill_parent" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@+id/listMessages_messages" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_marginBottom="5dip" 
      android:layout_marginLeft="10dip" 
      android:layout_marginRight="10dip" 
      android:layout_marginTop="10dip" 
      android:layout_weight="1" 
      android:background="#000000" > 
     </ListView> 

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

      <Button 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" 
       android:visibility="invisible" /> 

      <Button 
       android:id="@+id/btnNewConversation_message" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="5dip" 
       android:layout_weight="50" 
       android:onClick="newConversation" 
       android:text="@string/NewConversation" /> 
     </LinearLayout> 

    </LinearLayout> 
+0

alors qu'est-ce que vous voulez maintenant .. –

+0

Je veux savoir ce que j'ai fait de mal. a.k.a. qu'est-ce qui cause l'avertissement. puisque je veux l'utiliser dans plusieurs endroits de mon application –

Répondre

1

Cocher cette code. Je ne suis pas obtenir avertissement

<?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="fill_parent" 
    android:orientation="vertical" 
    android:weightSum="10"> 
    <ListView android:id="@+id/listMessages_messages" 
     android:layout_width="fill_parent" android:layout_height="0px" 
     android:layout_marginBottom="5dip" android:layout_marginLeft="10dip" 
     android:layout_marginRight="10dip" android:layout_marginTop="10dip" 
     android:layout_weight="8" android:background="#000000"> 
    </ListView> 
    <LinearLayout android:layout_width="fill_parent" 
     android:layout_height="0px" android:orientation="horizontal" 
     android:weightSum="10" android:layout_weight="2"> 
     <Button android:layout_width="0px" 
      android:layout_height="wrap_content" android:layout_weight="5" 
      /> 
     <Button android:id="@+id/btnNewConversation_message" 
      android:layout_width="0px" android:layout_height="wrap_content" 
      android:layout_marginRight="5dip" android:layout_weight="5" 
      android:onClick="newConversation" /> 
    </LinearLayout> 
</LinearLayout> 

Comme vous plaçant les deux vues 1.List Voir 2.Linear mise en page (deux boutons) dont vous avez besoin pour donner la propriété de poids pour les régler correctement et pour divison horizontale pour les boutons donnent également quelques la propriété de somme de poids à la deuxième disposition linéaire la divise également en utilisant des poids. note dans la deuxième disposition linéaire j'ai utilisé la largeur pour les boutons à 0px

+0

merci pour la réponse, j'ai eu du mal à comprendre ce que vous vouliez dire avec le weightsum dans votre réponse précédente. Maintenant, je peux travailler sur mon application. –

+1

Si vous n'obtenez pas d'avertissement avec ce code, votre IDE est mal configuré. Les poids imbriqués sont exactement cela, imbriqués, simplement en ajoutant un weightSum à leur compte ne change pas ce fait. Aussi, je ne comprends pas pourquoi vous utilisez toutes ces valeurs de largeur/hauteur 0px quand vous devriez utiliser fill_parent, quel est le raisonnement? –

+0

@Justin Buser - pouvez-vous s'il vous plaît fournir un exemple simple de poids imbriqués, b/c ils ne travaillent pas pour moi non plus, et vous semblez que vous les avez descendus? Merci. – samosaris

0

Si je comprends bien votre question qui suit est sol: (disons environ 10) avec en disposition de haut donnent un peu de poids à ListView comme 5 ou 6 faire bien que la hauteur de mise en page pour définir à 0px créer un enfant disposition linéaire donner restant poids (par exemple 10 poids de listview) comme layout_weight à la disposition des enfants pour la présentation des enfants layout_height être 0px avec dans ce lieu de mise en page que deux boutons .Hope c'est ce que vous avez besoin

+0

qui est proche de la solution, mais pas entièrement. À mon avis, il ne devrait pas y avoir de lien entre la liste et les boutons concernant le poids. le poids de la liste est de laisser remplir le reste de l'écran verticalement (hauteur) et les deux doivent remplir la moitié de l'écran horizontalement (largeur). –

+0

En d'autres termes, le poids de Listview devrait être pour la disposition linéaire externe seulement et les poids pour les boutons sont pour la disposition linéaire, ils sont à l'intérieur et n'ont pas besoin d'avoir une interaction avec la liste. –

+4

Vous avez vraiment compris ce qu'il essayait de dire? Je l'ai lu cinq fois et je ne peux pas en faire la tête ou la queue. –

Questions connexes