286 votes

Changer la source de l'ImageView

J'ai un ImageView avec une image source définie dans le xml en utilisant la syntaxe suivante :

   <ImageView 
      android:id="@+id/articleImg"
      style="@style/articleImgSmall_2"
      android:src="@drawable/default_m" />

J'ai maintenant besoin de modifier cette image de manière programmatique. Ce que je dois faire, c'est supprimer l'ancienne image et en ajouter une nouvelle. Voici ce que j'ai fait :

myImgView.setBackgroundResource(R.drawable.monkey);

Cela fonctionne mais j'ai remarqué qu'Android empile la nouvelle image par-dessus l'ancienne (ne me demandez pas comment je l'ai découvert, ce n'est pas pertinent pour la discussion :). Je dois définitivement me débarrasser de l'ancienne image avant de définir la nouvelle.

Comment puis-je y parvenir ?

7voto

Suragch Points 197

Réponse visuelle complémentaire

ImageView : setImageResource() (méthode standard, le rapport d'aspect est conservé)

enter image description here

View : setBackgroundResource() (l'image est étirée)

enter image description here

Les deux sites

enter image description here

Ma réponse plus complète est ici .

3voto

commonSenseCode Points 9296

Si vous voulez définir dans imageview une image qui se trouve à l'intérieur du mipmap dirs vous pouvez le faire comme ceci :

myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)

2voto

LOW Points 33

Il suffit d'écrire une méthode pour changer l'image

public void setImage(final Context mContext, final ImageView imageView, int picture)
{
    if (mContext != null && imageView != null)
    {
        try
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
            {
                imageView.setImageDrawable(mContext.getResources().getDrawable(picture, mContext.getApplicationContext().getTheme()));
            } else
            {
                imageView.setImageDrawable(mContext.getResources().getDrawable(picture));
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

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