web-dev-qa-db-fra.com

Comment définissez-vousLayoutParams () pour un ImageView?

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?

71
DeadTime

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.

161
Steve Haley

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);
18
Bogdan

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.

11
Karl Giesing

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);
6
Codeversed