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" />
Maintenant, je dois changer cette image par programme. Ce que je dois faire, c'est supprimer l'ancienne image et en ajouter une nouvelle. Ce que j'ai fait, c'est ceci:
myImgView.setBackgroundResource(R.drawable.monkey);
Cela fonctionne, mais j'ai remarqué qu'Android empile la nouvelle image sur l'ancienne (ne me demandez pas comment j'ai découvert que cela n'était pas pertinent pour la discussion :). Je dois définitivement me débarrasser de l'ancienne avant de définir la nouvelle image.
Comment puis-je y parvenir?
la source
android.widget.ImageView
#setBackgroundContextCompat
pour pouvoir être dessiné sansgetTheme
Vous êtes censé utiliser à la
setImageResource
place desetBackgroundResource
.la source
est utilisé pour définir l'image dans la vue d'image actuelle, mais si vous souhaitez supprimer cette image, vous pouvez utiliser ce code comme:
maintenant, cela supprimera l'image de votre vue d'image, car elle a défini la valeur des ressources à zéro.
la source
obtenir l'ID d'ImageView en tant que
puis utiliser
pour définir l'image source par programmation à la place à partir de XML.
la source
Ou essayez celui-ci. Pour moi ça marche bien:
la source
Réponse visuelle supplémentaire
ImageView
:setImageResource()
(méthode standard, les proportions sont conservées)View
:setBackgroundResource()
(l'image est étirée)Tous les deux
Ma réponse plus complète est ici .
la source
Si vous souhaitez définir dans imageview une image qui se trouve dans les répertoires mipmap, vous pouvez le faire comme ceci:
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)
la source
Il suffit d'écrire une méthode pour changer l'image
la source