0

J'ai ce code dans une méthode où listOfTeamsJoined a définitivement deux équipes.Pourquoi un seul bouton apparaît-il lorsque j'en ajoute dynamiquement deux?

for (Team t : listOfTeamsJoined) 
{ 
       makeTeamButton(t.display_name); 
} 

qui appelle cette méthode:

private void makeTeamButton(String teamName) 
{ 
         Button newTeamButton = new Button(this); 
       LinearLayout teamButtonHolder = (LinearLayout) findViewById(R.id.availableTeamsList); 

       newTeamButton.setLayoutParams(new LinearLayout.LayoutParams(
               LinearLayout.LayoutParams.MATCH_PARENT, 
               LinearLayout.LayoutParams.WRAP_CONTENT 
       )); 

       newTeamButton.setBackgroundColor(Color.parseColor("#00C272")); 
       newTeamButton.setTextColor(Color.parseColor("#FFFFFF ")); 
       newTeamButton.setText(teamName); 

       teamButtonHolder.addView(newTeamButton); 
   } 

Le problème est que seul un d'entre eux montre. Je soupçonne que l'un est remplacé par l'autre ou qu'ils apparaissent l'un sur l'autre. Cependant, puisque j'utilise LinearLayout, je ne pense pas qu'ils devraient apparaître les uns sur les autres et pour autant que je sache, addView ne remplace pas les vues, il les ajoute juste. Cependant, si je réorganise la liste, je peux faire apparaître l'autre, ils n'apparaîtront pas ensemble.

+1

Vérifiez votre LinearLayout Orientation. –

+0

Wow, je me sens bête, c'était le problème – CookieMonster

Répondre

1

L'orientation par défaut est horizontale. Et vous utilisez une largeur de MATCH_PARENT pour les largeurs des deux boutons. Cela signifie que votre premier bouton prendra toute la largeur et ne laissera rien pour le second, le rendant ainsi invisible.

Définissez l'orientation manuellement si vous voulez que votre LinearLayout à être verticale comme ceci:

teamButtonHolder.setOrientation(LinearLayout.VERTICAL); 

Si vous souhaitez garder à l'horizontale, puis juste inverser la largeur et la hauteur pour être WRAP_CONTENT et MATCH_PARENT respectivement. Et ça marchera aussi mais ça va les montrer côte à côte.

0

Quelle est l'orientation de votre LinearLayout? Semble être à l'horizontale et vous voulez les placer les uns sur les autres, alors "vertical" devrait être le bon choix ici.

0

Vous ajoutez deux nouveau bouton dynamiquement, Mais il montre un bouton pendant que vous voyez, car il est arrivé en raison de se chevaucher les uns les autres. alors donnez de la marge ou du rembourrage aux autres, alors vous le verrez. J'espère que cela vous sera utile.

0

Lorsque vous définissez vos boutons largeur match_parent comme ci-dessous:

newTeamButton.setLayoutParams(new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
    )); 

vous devez définir l'orientation de votre LinearLayout de vertical comme;

Mais si vous souhaitez définir les boutons comme horizontally puis définissez la largeur de param wrap_content comme:

newTeamButton.setLayoutParams(new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
    ));