Ma question est simple,
Comment définir mes boutons layout_gravity par programmation?
J'ai trouvé cela sur Internet, mais cela me lève simplement une exception Nullpointer:
Button MyButton = new Button(this);
LinearLayout.LayoutParams lllp=(LinearLayout.LayoutParams)MyButton.getLayoutParams();
lllp.gravity=Gravity.RIGHT;
MyButton.setLayoutParams(lllp);
MyLinearLayout.addView(MyButton);
Toute solution?
android
android-layout
Adam Varhegyi
la source
la source
Réponses:
Java
Kotlin
Pour les valeurs de gravité et comment régler la gravité, vérifiez la gravité .
Fondamentalement, vous devez choisir le
LayoutParams
selon le parent. Ça peut êtreRelativeLayout
,LinearLayout
etc ...la source
layout_gravity
(c'est-à-direLayoutParams.gravity
). Cegravity
seraitbutton.setGravity()
setGravity()
c'est le layout_gravity, mais c'est faux. Je peux approuver que cette réponse est correcte pour définir la configuration de layout_gravity par programme.Je détesterais ressusciter d'anciens threads mais c'est un problème auquel on ne répond pas correctement et en plus j'ai rencontré ce problème moi-même.
Voici le long morceau, si vous êtes uniquement intéressé par la réponse, faites défiler jusqu'au code:
android: gravity et android: layout_gravity fonctionne différemment. Voici un article que j'ai lu qui m'a aidé.
GIST de l'article: la gravité affecte la vue une fois la hauteur / largeur affectée. Le centre de gravité n'affectera donc pas une vue effectuée FILL_PARENT (pensez-y comme marge automatique). Le centre de layout_gravity affectera la vue qui est FILL_PARENT (pensez-y comme pad automatique).
Fondamentalement, android: layout_gravity NE PEUT PAS être accessible par programme, uniquement android: gravity. Dans le cas de l'OP et dans mon cas, la réponse acceptée ne place pas le bouton verticalement au centre.
Pour améliorer la réponse de Karthi:
Lien vers
LinearLayout.LayoutParams
.android: layout_gravity affiche "Aucune méthode associée", ce qui ne peut pas être consulté par programmation. Alors que la gravité est un domaine de la classe.
la source
Pour layout_gravity, utilisez la réponse indiquée par "karthi". Cette méthode définit la gravité pour placer les enfants à l'intérieur de la vue.
la source
J'ai eu un problème similaire avec la définition par programme de layout_gravity sur les boutons d'un GridLayout.
L'astuce consistait à définir la gravité sur le bouton layoutParams APRÈS que le bouton a été ajouté à un parent (GridLayout), sinon la gravité serait ignorée .
la source
Si vous souhaitez modifier la
layou_gravity
vue existante, procédez comme suit:N'oubliez pas d'utiliser le droit en
LayoutParams
fonction du type de mise en page dans lequel se trouve votre vue. Ex:la source
utiliser cela pour ajouter plus d'une gravité
la source
Cette question est ancienne mais j'ai juste eu le même problème et l'ai résolu comme ça
la source
KOTLIN définissant plus d'une gravité sur FrameLayout sans changer de taille:
la source
J'utilise quelque chose comme ça: (Xamarin et code C #)
SetGravity place mon textView au centre de la mise en page. La propriété de mise en page SetGravity fait donc référence au contenu de la mise en page
la source
Si vous devez définir la gravité pour une vue, utilisez les éléments suivants
Pour définir la gravité de la disposition pour le bouton, utilisez le champ de gravité pour les paramètres de disposition comme
essayez cet espoir cela efface merci
la source
Les autres réponses sont correctes, je veux ajouter plus d'explications. La disposition_gravité indique comment positionner la vue dans la vue parent.
Vous devez définir la gravité ** après l'appel de la méthode parentView.addView () **. Nous pouvons voir le code:
Et le problème du pointeur nul est qu'il n'appelle pas addView avant getLayoutParams ().
L'annotation a déjà été dite "Cette méthode peut retourner null si cette vue n'est pas attachée à un ViewGroup parent ou {@ link # setLayoutParams (android.view.ViewGroup.LayoutParams)} n'a pas été invoquée avec succès. Lorsqu'une vue est attachée à un parent ViewGroup, cette méthode ne doit pas retourner null. "
la source
Si vous voulez mettre une vue au centre du parent, vous pouvez le faire avec le code suivant.
ces sections de code font que LinearLayout place les premiers éléments de vue au centre du parent. Donc, nous ne considérons pas la largeur initiale et la hauteur pour organiser la vue au centre. Je fais bien la section de code.
la source
à RelativeLayout, essayez ce code, cela fonctionne pour moi:
yourLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
la source
Fonctionne parfaitement !!! Aucune des réponses ci-dessus ne fonctionne pour moi. Dans le fichier Xml, le réglage de la gravité et celui de la disposition layout_gravity sont différents. Découvrez le code ci-dessous
Vérifiez également ceci, où vous pouvez trouver des explications claires sur la gravité et la disposition_gravité.
la source
La plupart des réponses ci-dessus sont exactes, alors écrivez des méthodes d'assistance, afin que vous puissiez les utiliser directement dans votre projet.
la source
Je suis passé de LinearLayout.LayoutParams à RelativeLayout.LayoutParams pour enfin obtenir le résultat que je désirais sur un circuit personnalisé que j'ai créé.
Mais au lieu de la gravité, vous utilisez addRule
RelativeLayout.LayoutParams mCircleParams = new RelativeLayout.LayoutParams (circleheight, circleheight);
la source
Essayez ce code
ou
la source
layout_gravity
nongravitiy
.la source
la source