Android Mise Params modifier UNIQUEMENT la largeur et la hauteur
Je sais comment définir la largeur et la hauteur de vue à l'aide de LayoutParams
via procédant de la manière suivante:
android.view.ViewGroup.LayoutParams params = button.getLayoutParams();
params.width = height/7;
params.height = height/10;
button.setLayoutParams(params);
Maintenant, dès que je veux appliquer la même hauteur et la largeur d'un autre bouton, j'ai besoin de créer un autre LayoutParams ou remplacer celui existant comme ici:
android.view.ViewGroup.LayoutParams params2 = but2.getLayoutParams();
params2.width = height/7;
params2.height = height/10;
but2.setLayoutParams(params2);
J'ai environ 50 boutons dans mon application et je doute qu'il est considéré comme bon code pour obtenir tous les Paramètres afin de ne modifier la largeur et la hauteur que je veux garder le reste des params (toLeftOf, [...]).
Est-il un moyen pour changer SEULEMENT la largeur et la hauteur de la params mais gardez le reste des paramètres? De sorte qu'il ressemble alors à quelque chose comme:
android.view.ViewGroup.LayoutParams params = button.getLayoutParams();
params.width = height/7;
params.height = height/10;
button.setLayoutParams(params);
button2.setLayoutParams(params);
button3.setLayoutParams(params);
butt[...]
Merci beaucoup à l'avance.
largeur!=la hauteur, mais la hauteur(bouton)==hauteur(bouton+1) et la largeur(bouton)==largeur(bouton+1)
C'est que pour tous les boutons? Ou pour 2 seulement?
Tous d'entre eux. Désolé pour cette mathmatic représentation; tout autre bouton que vous regardez, le suivant a la même Params
Comment êtes-vous créer vos boutons? Par programme ou en utilisant une mise en page fichier XML?
OriginalL'auteur user2875404 | 2015-02-02
Vous devez vous connecter pour publier un commentaire.
De l'objectif même de l'aide de la méthode
getLayoutParams()
est de prendre l'existant à partir d'uneView
(qui gardent toutes les règles et les trucs). Ensuite, vous pouvez modifier des paramètres spécifiques de cesLayoutParams
et de garder le reste inchangé. Par conséquent, vous besoin appelergetLayoutParams()
et de modifier l'objet retourné si votreViews
varier les paramètres en xml. Dans le cas où ils ont été en utilisant exactement les mêmes règles en xml, vous pouvez faire exactement comme vous l'avez écrit dans votre dernier exemple.Ce que je vous conseillerais de faire, c'est juste pour faire une méthode qui permettrait d'envelopper l'ensemble du processus de mise à jour
LayoutParams
. Comme:Qui permettrait de simplifier votre code de manière significative, car alors vous pouvez simplement appeler cette méthode pour chaque unique de vos boutons, avec de bonnes valeurs pour la largeur et la hauteur.
OriginalL'auteur Bartek Lipinski
Dans Kotlin nous pouvons le faire plus court et plus élégant:
OriginalL'auteur comm1x
Comme d'autres réponses ont dit: vous avez besoin de
getLayoutParams()
, de modifier l'retourné LayoutParams objet, etsetLayoutParams()
avec elle (si c'est raisonnable de l'API est en place pour le débat).Mais comme comm1x dit, Kotlin peut faire ce vraiment simple, et facile à lire.
Comment à ce sujet:
Cela nécessite une extension de la fonction:
Si vous vouliez appliquer les mêmes paramètres de mise en page à plusieurs
View
s, vous pouvez faire quelque chose comme:PS. Kotlin n'est rien de fantastique.
OriginalL'auteur aaaidan
Que je ne peux pas commenter sur les autres encore:
J'ai créé un petit et élégant, l'extension de la fonction de Kotlin.
Un cas d'utilisation pour un affichage dans un constraintLayout, par exemple, pourrait être:
Si vous n'avez pas besoin d'une mise en œuvre spécifique de LayoutParams (il est conseillé d'utiliser un spécifique), vous pouvez utiliser une version plus petite de la fonction d'extension:
..ce qui aurait pour résultat:
OriginalL'auteur Jolan Rensen