Comment effacer une vue D'image sur Android?

je suis la réutilisation de ImageView s pour mon affiche, mais à un certain moment, je n'ai pas de valeurs pour la mettre.

alors comment effacer un ImageView dans Android?

j'ai essayé:

mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);

aucun d'eux N'a effacé la vue, elle montre toujours l'image précédente.

219
demandé sur S H 2010-05-18 20:35:06

15 réponses

je le faisais avec le dennis.sheppard solution:

viewToUse.setImageResource(0);

cela fonctionne, mais il n'est pas documentéde sorte qu'il n'est pas vraiment clair s'il affecte quelque chose d'autre dans la vue (vous pouvez vérifier le ImageView code si vous voulez, je ne l'ai pas fait).

je pense que la meilleure solution est:

viewToUse.setImageResource(android.R.color.transparent);

j'aime cette solution le plus car il n'y a rien de délicat à inverser le l'état et il est également clair ce qu'il fait.

448
répondu Mario Lenci 2017-05-23 12:02:59

j'ai eu un problème similaire, où je devais essentiellement supprimer ImageViews de l'écran complètement. Certaines des réponses ici m'ont mené dans la bonne direction, mais finalement appeler setImageDrawable() a fonctionné pour moi:

imgView.setImageDrawable(null);
93
répondu Kon 2011-04-09 16:36:47

je sais que c'est vieux, mais j'ai pu l'accomplir avec

viewToUse.setImageResource(0);

ne semble pas devoir marcher, mais j'ai essayé sur un coup de tête, et ça a fonctionné parfaitement.

77
répondu dennis.sheppard 2012-03-07 20:04:06

il semble que ce que vous voulez est une image par défaut pour définir votre ImageView à quand il n'affiche pas une image différente. C'est ce que fait L'application Contacts:

if (photoId == 0) {
    viewToUse.setImageResource(R.drawable.ic_contact_list_picture);
} else {
    // ... here is where they set an actual image ...
}
17
répondu Daniel Lew 2010-05-18 17:40:34

j'ai essayé ceci pour effacer L'Image et dessiner un paquet dans ImageView

ImgView.setImageBitmap(null);
ImgView.destroyDrawingCache();

j'espère que cela fonctionne pour vous !

9
répondu nandha 2013-09-13 05:16:50

si aucune de ces solutions ne nettoie une image que vous avez déjà définie (en particulier setImageResource(0) ou setImageResources(android.R.color.transparent) , vérifiez que l'image actuelle n'est pas définie en arrière-plan en utilisant setBackgroundDrawable(...) ou quelque chose de similaire.

votre code définira simplement la ressource d'image au premier plan à quelque chose de transparent devant l'image de fond que vous avez définie et que vous montrerez toujours.

9
répondu Brad English 2016-08-08 21:14:23

Hé, je sais que je suis très en retard pour cette réponse, mais juste pensé que je dois partager ce,

La méthode à appeler lorsque u réinitialiser l'image doit être la même méthode que u en u ont été paramètre.

quand vous voulez réinitialiser la source d'image @dennis.sheepard réponse ne fonctionne bien que si u sont à l'origine de définir l'image dans le bitmap en utilisant setImageResource()

par exemple,

j'avais utilisé setImageBitmap() et donc mettre setImageResource(0) a fonctionné, à la place j'ai utilisé setImageBitmap(null) .

5
répondu Ajay 2013-06-06 09:19:19

j'ai réussi à atteindre cet objectif en définissant un (quelque chose comme blank_white_shape.xml):

<shape xmlns:android="http://schemas.android.com/apk/res/android"       
       android:shape="rectangle">
    <solid android:color="@android:color/white"/>
</shape>

alors quand je veux effacer la vue de l'image que je viens d'appeler

 imageView.setImage(R.drawable.blank_white_shape);

Cela fonctionne à merveille pour moi!

3
répondu kwasi 2013-06-06 07:12:40

pour L'image D'un article de ListView, vous pouvez définir ImageView.setVisibility(View.INVISIBLE) ou ImageView.setImageBitmap(null) dans l'adaptateur de liste pour le cas" aucune image".

1
répondu Arvis 2013-01-19 11:06:16

Comme kwasi , écrit et tuz golu édité, vous pouvez utiliser transparent, au lieu de blanc:

Fichier drawable/transparent.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@android:color/transparent"/>
</shape>

à l'Intérieur d'une activité, affichage, etc:

view.setImageResource(R.drawable.transparent);
1
répondu KitKat 2017-05-23 12:02:59

Pour supprimer l'image en ImageView utilisation:



title_image.setImageResource(-1);



il travaille pour moi

0
répondu Tobore Igbe 2016-02-26 11:06:39

si vous utilisez la bibliothèque de soutien, vous obtenez AppCompatImageView au lieu de ImageView , qui soutient setImageResource(0) sur tous les appareils, donc vous devriez être d'accord avec l'utilisation de la même manière que l'utilisation de setImageDrawable(null) et setImageBitmap(null)

sinon, ça devrait bien marcher à partir d'une version Android. Selon le code D'Android et selon mes tests, je pense qu'il devrait être sûr d'utiliser setImageResource(0) de L'API Android 22 (5.1). Vous pouvez voir le code Android de L'API 22 vs API 21, ici

0
répondu android developer 2018-05-01 05:17:33

je faisais face à la même question, j'ai changé la couleur de fond de la vue à la mise en page couleur de fond u peut faire comme ceci:

 edit_countflag.setBackgroundColor(Color.parseColor("#ffffff"));

//puis définissez l'image

edit_countflag.setImageResource(R.drawable.flag_id);
0
répondu Syed Danish Haider 2018-05-21 12:15:10

puis-je juste souligner ce que vous essayez tous de mettre et int là où il attend un tirable.

ne devriez-vous pas faire ce qui suit?

imageview.setImageDrawable(this.getResources().getDrawable(R.drawable.icon_image));

imageview.setImageDrawable(getApplicationContext().getResources().getDrawable(R.drawable.icon_profile_image));
-1
répondu Aaron Newton 2012-04-12 12:33:06

Essayer mPhotoView.setAlpha(0) pour que l'image soit complètement transparent (restauration à 255).

-3
répondu Márton Molnár 2010-05-18 17:18:08