2017-05-26 2 views
0

J'ai un HorizontalScrollView avec un LinearLayout vertical dedans. Là, j'ajoute quelques vues personnalisées du même type. Par défaut, il y a beaucoup d'espace entre les vues. Donc j'ai deviné que je dois mettre la marge de mes vues à 0 ou quelque chose. Mais il n'y a absolument aucun résultat.
Tout d'abord j'ai essayé de changer la marge dans le xmlBeaucoup d'espacement entre les vues et la marge ne fait pas les choses

<gui.CardUi 
    android:id="@+id/cardUi" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_margin="0dp" 
    </gui.CardUi> 

Que je l'ai essayé de changer la marge dans le code:

private void setMargins (int left, int top, int right, int bottom) { 
    if (getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { 
     ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) getLayoutParams(); 
     p.setMargins(left, top, right, bottom); 
     requestLayout(); 
    } 
    } 

setMargins(0, 0, 0, 0); 

Je ne sais pas si l'info est importante, mais j'ajoute les vues par programme avec LayoutInflater.

Répondre

1

Vos marges ne seraient pas définies en raison de la façon dont vous gonflez les vues. Je suppose que vous avez utilisé de telle manière:

View child = getLayoutInflater().inflate(R.layout.mylayout, null); 

Le point est quand vous voulez gonfler une vue et l'ajouter à une autre vue, vous devez en informer le gonfleur sur la vue conteneur (dans votre exemple de mise en page linéaire). Donc, votre paramètre de mise en page tel que les marges et le poids et la gravité serait réglé correctement. Il faut donc utiliser cette méthode à la place:

View child = getLayoutInflater().inflate(R.layout.child, item, false); 

Il n'y a pas besoin d'ajouter la marge dans votre code.

+0

Ça m'a aidé. Merci mec – MolteNolte