80 votes

Comment configurer la fonction setLayoutParams() pour une 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 peux trouver de la documentation dans l'API que pour les différentes fonctions de l'API. ViewGroups mais pas un ImageView . Pourtant, le ImageView semble disposer de cette fonctionnalité.

Ce code ne fonctionne pas...

myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));

Comment dois-je m'y prendre ?

169voto

Steve Haley Points 26928

Vous devez définir les LayoutParams du ViewGroup dans lequel se trouve l'ImageView. Par exemple, si votre ImageView se trouve à l'intérieur d'un LinearLayout, vous créez un fichier

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 allouer à la vue.

19voto

Bogdan Points 91

Vieux fil mais j'ai eu le même problème maintenant. Si quelqu'un rencontre ce problème, il trouvera probablement cette réponse :

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);

Cela ne fonctionnera que si vous ajoutez l'ImageView comme sous-vue à un LinearLayout. Si vous l'ajoutez à un RelativeLayout, vous devrez appeler :

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);

13voto

Karl Giesing Points 354

Si vous modifiez la mise en page d'une ImageView existante, vous devriez être en mesure de récupérer simplement les LayoutParams actuels, de modifier la largeur/la hauteur et de les rétablir :

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.

6voto

Codeversed Points 1418

Un ImageView reçoit setLayoutParams de View qui utilise ViewGroup.LayoutParams. Si vous l'utilisez, il se plantera dans la plupart des cas. Vous devez donc utiliser getLayoutParams() qui se trouve dans View.class. Cela héritera de la vue parente de l'ImageView et fonctionnera toujours. Vous pouvez le confirmer ici : ImageView étend la vue

Supposons que vous ayez un ImageView défini comme ' image_view ' et la largeur/hauteur int définie comme Taille du pouce

La meilleure façon de procéder :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X