web-dev-qa-db-fra.com

Supprimer l'image d'une imageview Android

J'essaie de créer un ImageView contenant une galerie d'images. En touchant la demande de l'utilisateur pour charger l'image suivante. Si l'image suivante n'est pas trouvée sur le serveur ou prend du temps à charger, il faut que l'ancienne image soit vide.

setVisibility(View.GONE) ou setVisibility(View.INVISIBLE) ne fonctionne pas pour moi car, lorsque je suis invisible/parti, j'arrête la détection de onTouch() (et l'utilisateur est verrouillé sur l'image actuelle).

Comment faire en sorte que ImageView charge un bitmap vide ou efface (supprime) le bitmap actuel?

99
ChyBy

J'utilise toujours

imageView.setImageDrawable(null);
367
tristan2468

Essayer:

imageView.setImageResource(0);

Cela définira la vue de l'image pour n'utiliser aucune ressource.

6
Ribose

D'après ce que j'ai remarqué, le "fonctionnement" ou non d'une certaine méthode d'effacement d'image dépend de la méthode utilisée pour remplir ImageView.

Donc, si vous définissez img.setImageBitmap(bmp), vous devez utiliser img.setImageBitmap(null) pour effacer. Lorsque vous img.setImageResource(resId), vous devez utiliser img.setImageResouce(0) pour effacer. Etc.

5
Variag

Certainement imageView.setImageResource (0) fonctionne. Cela n'a jamais échoué pour moi et je l'ai utilisé plusieurs fois.

setImageResource se voit généralement attribuer la référence R.drawable (la référence de l'image), qui est stockée sous la forme d'un entier, mais affichée dans la classe R.Java sous forme de valeur hexadécimale, 0xf2fs ... Donc, en supposant que cette référence existe, elle s'affichera une image, si vous transmettez plus tard cette même image, une référence qui n'existe pas, l'ancienne image ne s'affichera plus. Donc, si vous passez 0 ou 5, ou un entier qui ne correspond pas à une ressource référencée dans votre classe R.Java, il supprimera complètement l'image de la source de l'imageView. Donc, si vous passez 0 à l'ancienne référence de l'imageView.

5
james