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.
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.
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);
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.
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 ...
}
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 !
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.
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)
.
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!
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".
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);
Pour supprimer l'image en ImageView utilisation:
title_image.setImageResource(-1);
il travaille pour moi
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
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);
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));
Essayer mPhotoView.setAlpha(0)
pour que l'image soit complètement transparent (restauration à 255).