0

Je voudrais avoir au maximum 5 CheckBox prenant la même quantité d'espace disponible entre elles. Le nombre de CheckBox dépend du nombre de réponses à une question. Je suis donc générer dynamiquement les cases à cocher, mais le maximum est 5.Utilisation du layout_weight pour les LinearLayouts internes orientées verticalement

enter image description here

Mon principal LinearLayout a une horizontal orientation et 2 LinearLayout intérieure ont un vertical orientation. J'ai essayé d'utiliser android:weightSum=5 pour les deux dispositions intérieures et android:layout_weight="1" pour chaque CheckBox. Mais ça ne marche pas.

<LinearLayout 
    android:id="@+id/layout_multiplechoice" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/layout_question" 
    android:layout_margin="5dp" 
    android:layout_toEndOf="@+id/iv_image" 
    android:layout_toRightOf="@+id/iv_image" 
    android:orientation="horizontal"> 

    <LinearLayout 
     android:id="@+id/layout_multiplechoice_solutions" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_vertical" 
     android:orientation="vertical" 
     android:visibility="invisible" 
     android:weightSum="5"> 

     <CheckBox 
      android:id="@+id/cb_solution1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:enabled="false"/> 

     <CheckBox 
      android:id="@+id/cb_solution2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:enabled="false"/> 

     <CheckBox 
      android:id="@+id/cb_solution3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:enabled="false"/> 

     <CheckBox 
      android:id="@+id/cb_solution4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:enabled="false"/> 

     <CheckBox 
      android:id="@+id/cb_solution5" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:enabled="false"/> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout_multiplechoice_answers" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:orientation="vertical" 
     android:weightSum="5"> 

     <CheckBox 
      android:id="@+id/cb_answer1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:buttonTint="@android:color/holo_green_light"/> 

     <CheckBox 
      android:id="@+id/cb_answer2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:buttonTint="@android:color/holo_green_light"/> 

     <CheckBox 
      android:id="@+id/cb_answer3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:buttonTint="@android:color/holo_green_light"/> 

     <CheckBox 
      android:id="@+id/cb_answer4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:buttonTint="@android:color/holo_green_light"/> 

     <CheckBox 
      android:id="@+id/cb_answer5" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:buttonTint="@android:color/holo_green_light"/> 
    </LinearLayout> 
</LinearLayout> 

Répondre

0
  1. Retirez le android:weightSum="5" de votre LinearLayout
  2. Ajouter android:layout_weight="1" à tous vos CheckBoxe s
  3. Set android:layout_height="0dp" à tous vos CheckBoxe s

visibilité Définissez ensuite GONE programme pour ceux que vous vouloir cacher. Tout l'espace restant dans la disposition parente du CheckBoxes sera rempli de manière égale.

+0

Merci, mais il n'y a aucune différence avec ces changements. –

+0

Vous devrez également définir 'layout_height' de LinearLayout sur quelque chose de plus grand que le total de la hauteur de CheckBoxes. 'Wrap_content' (que vous semblez avoir réglé maintenant pour le second jeu de CheckBox) rendra la hauteur exactement assez petite pour s'adapter à tous les CheckBox sans aucun espacement, ce qui n'est pas ce que vous voulez. – DanielLaneDC

+0

Voulez-vous dire le layout_height de mon deuxième LinearLayout intérieur? –

0

Essayez avec la mise en page XML ci-dessous j'ai fait quelques changements. il peut vous aider

<LinearLayout 
     android:id="@+id/layout_multiplechoice" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/layout_question" 
     android:layout_margin="5dp" 
     android:layout_toEndOf="@+id/iv_image" 
     android:layout_toRightOf="@+id/iv_image" 
     android:orientation="horizontal" 
     android:weightSum="2"> 

     <LinearLayout 
      android:id="@+id/layout_multiplechoice_solutions" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="center_vertical" 
      android:layout_weight="1" 
      android:orientation="vertical" 
      android:visibility="invisible" 
      android:weightSum="5"> 

      <CheckBox 
       android:id="@+id/cb_solution1" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:enabled="false" /> 

      <CheckBox 
       android:id="@+id/cb_solution2" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:enabled="false" /> 

      <CheckBox 
       android:id="@+id/cb_solution3" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:enabled="false" /> 

      <CheckBox 
       android:id="@+id/cb_solution4" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:enabled="false" /> 

      <CheckBox 
       android:id="@+id/cb_solution5" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:enabled="false" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/layout_multiplechoice_answers" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_weight="1" 
      android:orientation="vertical" 
      android:weightSum="5"> 

      <CheckBox 
       android:id="@+id/cb_answer1" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:buttonTint="@android:color/holo_green_light" /> 

      <CheckBox 
       android:id="@+id/cb_answer2" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:buttonTint="@android:color/holo_green_light" /> 

      <CheckBox 
       android:id="@+id/cb_answer3" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:buttonTint="@android:color/holo_green_light" /> 

      <CheckBox 
       android:id="@+id/cb_answer4" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:buttonTint="@android:color/holo_green_light" /> 

      <CheckBox 
       android:id="@+id/cb_answer5" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:buttonTint="@android:color/holo_green_light" /> 
     </LinearLayout> 
    </LinearLayout> 
+0

Merci mais ça ne marche pas. –