Comment puis-je définir la valeur de l'attribut layout_weight
pour le bouton dans Android dynamiquement à partir du code Java?
245
Comment puis-je définir la valeur de l'attribut layout_weight
pour le bouton dans Android dynamiquement à partir du code Java?
Réponses:
Vous pouvez le transmettre en tant que partie du
LinearLayout.LayoutParams
constructeur:Le dernier paramètre est le poids.
la source
param = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0);
1f
s'il n'y a pas de décimalesRelative
Utilisation
LinearLayout.LayoutParams
:EDIT: Ah, la réponse d'Erich est plus facile!
la source
FILL_PARENT
a été déconseillé etMATCH_PARENT
doit être utilisé à la place.MATCH_PARENT
peut être utilisé au lieu deFILL_PARENT
même sur des appareils plus anciens.FILL_PARENT
contreMATCH_PARENT
.Si vous définissez déjà votre vue dans votre fichier de mise en page (xml), que vous souhaitez uniquement modifier le poids par programmation, cette méthode est préférable
new a LayoutParams écrase les autres paramètres définis dans votre fichier xml comme les marges, ou vous devez tous les spécifier dans LayoutParams.
la source
Si le constructeur avec largeur, hauteur et poids ne fonctionne pas, essayez d'utiliser le constructeur avec largeur et hauteur. Et puis réglez manuellement le poids.
Et si vous souhaitez que la largeur soit définie en fonction du poids, définissez la largeur sur 0 dans le constructeur. Il en va de même pour la hauteur. Le code ci-dessous fonctionne pour moi.
la source
Si je cherche une réponse, utilisez ceci:
Si vous initialisez votre mise en page à partir d'un fichier xml, cela sera beaucoup plus pratique que de fournir de nouveaux paramètres de mise en page pour la mise en page linéaire.
la source
layout_weight
a déjà été présentée, vous devez appelerView.requestLayout()
pour mettre à jour.N'importe lequel
LinearLayout.LayoutParams
et aTableLayout.LayoutParams
fonctionné pour moi, pour les boutons, le bon estTableRow.LayoutParams
. C'est:À propos de l'utilisation
MATCH_PARENT
ou deWRAP_CONTENT
la même chose.la source
FILL_PARENT
a été déconseillé etMATCH_PARENT
doit être utilisé à la place.LayoutParams
parent direct. Je suppose que vous avez eu un plantage à essayer d'utiliserLinearLayout.LayoutParams
sans le parentLinearLayout
.Si vous avez déjà défini votre vue dans le fichier de mise en page (xml) et que vous souhaitez uniquement modifier le poids de manière grammaticale, la création de nouveaux LayoutParams écrase les autres paramètres définis dans votre fichier xml.
Donc, vous devez d'abord utiliser "getLayoutParams" puis setLayoutParams
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams(); params.weight = 4f; mButton.setLayoutParams(params);
la source
Si
layoutparams
est déjà défini (en XML ou dynamiquement), voici une ligne:la source
En utilisant Kotlin, vous pouvez faire quelque chose comme:
la source