Changer ImageView source
J'ai un ImageView
avec une source d'images dans le format xml à l'aide de la syntaxe suivante:
<ImageView
android:id="@+id/articleImg"
style="@style/articleImgSmall_2"
android:src="@drawable/default_m" />
Maintenant, j'ai besoin de changer cette image par programmation. Ce que je dois faire est de supprimer l'ancienne image et en ajouter un nouveau bien. Ce que j'ai fait est-ce:
myImgView.setBackgroundResource(R.drawable.monkey);
Il fonctionne, mais j'ai remarqué android piles de la nouvelle image sur le dessus de l'ancien (ne me demandez pas comment j'ai trouvé qu'il n'est pas pertinent pour la discussion :). J'ai vraiment besoin de se débarrasser de l'ancienne avant d'installer la nouvelle image.
Comment puis-je y parvenir?
Vous devez vous connecter pour publier un commentaire.
Changer ImageView source:
À l'aide de
setBackgroundResource()
méthode:vous mettez que le singe dans l'arrière-plan.
Je suggère l'utilisation de
setImageResource()
méthode:ou avec
setImageDrawable()
méthode:*** Avec la nouvelle API android 22
getResources().getDrawable()
est maintenant obsolète. Ceci est un exemple de comment utiliser:et comment valider pour d'anciennes versions de l'API:
android.widget.ImageView
#setBackgroundContextCompat
pour obtenir retirable sansgetTheme
Vous êtes supposé utiliser
setImageResource
au lieu desetBackgroundResource
.est utilisé pour le réglage de l'image dans l'image actuelle de la vue, mais si vous voulez supprimer cette image
ensuite, vous pouvez utiliser ce code comme:
maintenant cela va supprimer l'image à partir de votre affichage de l'image, parce qu'il a mis les ressources de la valeur à zéro.
obtenir l'ID de l'ImageView comme
ensuite Utiliser
pour définir la source de l'image par programmation au lieu de XML.
Ou essayer celui-ci. Pour moi ça fonctionne:
Si vous souhaitez mettre en imageview une image qui est à l'intérieur de la mipmap dirs vous pouvez le faire comme ceci:
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)
Supplémentaire visual réponse
ImageView
:setImageResource()
(méthode standard, aspect ratio est maintenu)View
:setBackgroundResource()
(l'image est étirée)Les deux
Mon fuller réponse est ici.
Il suffit d'écrire une méthode pour changer imageview