Je veux définir le LayoutParams
pour un ImageView
mais je n'arrive pas à trouver la bonne façon de le faire.
Je ne trouve que de la documentation dans l'API pour les divers ViewGroups
, mais pas pour un ImageView
. Pourtant, le ImageView
semble avoir cette fonctionnalité.
Ce code ne fonctionne pas ...
myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));
Comment fait-on ça?
Vous devez définir les LayoutParams du ViewGroup dans lequel ImageView est assis. Par exemple, si votre ImageView se trouve dans un LinearLayout, vous créez un
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
En effet, c'est le parent de la vue qui doit savoir quelle taille attribuer à la vue.
Vieux fil mais j'avais le même problème maintenant. Si quelqu'un rencontre cela, il trouvera probablement cette réponse:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
Cela ne fonctionnera que si vous ajoutez ImageView en tant que sous-vue à LinearLayout. Si vous l'ajoutez à un RelativeLayout, vous devrez appeler:
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
Si vous modifiez la présentation d'un ImageView existant, vous devriez pouvoir obtenir simplement les LayoutParams actuels, changer la largeur/la hauteur et les redéfinir:
Android.view.ViewGroup.LayoutParams layoutParams = myImageView.getLayoutParams();
layoutParams.width = 30;
layoutParams.height = 30;
myImageView.setLayoutParams(layoutParams);
Je ne sais pas si c'est votre objectif, mais si c'est le cas, c'est probablement la solution la plus simple.
Une ImageView obtient setLayoutParams de View qui utilise ViewGroup.LayoutParams. Si vous l'utilisez, cela plantera dans la plupart des cas, vous devrez donc utiliser getLayoutParams (), qui se trouve dans View.class. Cela héritera de la vue parent de ImageView et fonctionnera toujours. Vous pouvez le confirmer ici: ImageView étend la vue
En supposant que vous avez un ImageView défini comme ' image_view ' et la largeur/hauteur int définie comme 'thumb_size'
La meilleure façon de faire cela :
ViewGroup.LayoutParams iv_params_b = image_view.getLayoutParams();
iv_params_b.height = thumb_size;
iv_params_b.width = thumb_size;
image_view.setLayoutParams(iv_params_b);