it-swarm.com.de

Wie kann ich eine ImageView in Android löschen?

Ich verwende ImageViews für meine Displays wieder, aber irgendwann habe ich keine Werte, um es zu setzen.

So löschen Sie einen ImageView in Android?

Ich habe es versucht:

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

Keiner von ihnen hat die Ansicht gelöscht, es wird immer noch das vorherige Bild angezeigt.

231
Pentium10

Ich habe es mit der dennis.sheppard -Lösung gemacht:

viewToUse.setImageResource(0);

es funktioniert, aber es ist nicht dokumentiert, so dass es nicht wirklich klar ist, ob es etwas anderes in der Ansicht bewirkt (Sie können den ImageView-Code überprüfen wenn Sie möchten, habe ich das nicht getan).

Ich denke, die beste Lösung ist:

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

Ich mag diese Lösung am meisten, weil es nicht schwierig ist, den Staat umzukehren, und es ist auch klar, was er tut.

469
Mario Lenci

Ich hatte ein ähnliches Problem, bei dem ich ImageViews grundsätzlich vollständig vom Bildschirm entfernen musste. Einige der Antworten führten mich in die richtige Richtung, aber letztendlich funktionierte der Aufruf von setImageDrawable () für mich: 

imgView.setImageDrawable(null);

(Wie im Kommentar erwähnt, ist diese Verwendung in den offiziellen Dokumenten dokumentiert: ImageView # setImageDrawable .)

100
Kon

Ich weiß, das ist alt, aber ich konnte das mit erreichen 

viewToUse.setImageResource(0);

Anscheinend sollte es nicht funktionieren, aber ich habe es aus einer Laune heraus versucht, und es hat perfekt funktioniert.

79
dennis.sheppard

Es scheint, als wäre ein Standardbild, auf das ImageView gesetzt werden soll, wenn kein anderes Bild angezeigt wird. So macht es die Anwendung "Kontakte":

if (photoId == 0) {
    viewToUse.setImageResource(R.drawable.ic_contact_list_picture);
} else {
    // ... here is where they set an actual image ...
}
17
Daniel Lew

Ich habe dies versucht, um Image und DrawableCache in ImageView zu löschen

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

Ich hoffe das funktioniert für dich!

10
nandha

Wenn keine dieser Lösungen ein bereits gelöschtes Bild löscht (insbesondere setImageResource(0) oder setImageResources(Android.R.color.transparent)), vergewissern Sie sich, dass das aktuelle Bild nicht mit setBackgroundDrawable(...) oder einem ähnlichen Hintergrund als Hintergrund festgelegt ist.

Ihr Code setzt die Bildressource im Vordergrund auf etwas Transparentes vor dem Hintergrundbild, das Sie festgelegt haben und weiterhin angezeigt werden.

9
Brad English

Hey, ich weiß, dass ich zu dieser Antwort extrem spät komme, aber ich dachte, ich muss das teilen.

Die Methode, die aufgerufen werden soll, wenn Sie das Bild zurücksetzen, muss dieselbe Methode sein, die Sie aufgerufen haben, während Sie es eingestellt haben.

Wenn Sie die image source @ zurücksetzen möchten, funktioniert die Antwort von dennis.sheepard nur dann, wenn Sie das Bild ursprünglich in der Bitmap mit setImageResource() einstellen.

zum Beispiel,

ich hatte setImageBitmap() verwendet und somit funktionierte setImageResource(0) nicht, stattdessen setImageBitmap(null)

5
Ajay

Ich konnte dies erreichen, indem ich ein drawable (so etwas wie blank_white_shape.xml) definierte:

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

Wenn ich dann die Bildansicht löschen möchte, rufe ich einfach an 

 imageView.setImage(R.drawable.blank_white_shape);

Das funktioniert wunderbar für mich!

3
kwasi

Für das ListView-Elementbild können Sie ImageView.setVisibility(View.INVISIBLE) oder ImageView.setImageBitmap(null) im Listenadapter für den Fall "kein Bild" festlegen.

1
Arvis

Wenn kwasi wrote und golu bearbeitet wurde, können Sie anstelle von Weiß transparent verwenden:

Datei 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>

In einer Aktivität, Ansicht usw.:

view.setImageResource(R.drawable.transparent);
1
KitKat

Ich stand vor dem gleichen Problem, dass ich die Hintergrundfarbe der Ansicht in die Hintergrundfarbe des Layouts geändert habe.

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

// Stellen Sie dann das Bild ein

edit_countflag.setImageResource(R.drawable.flag_id);
0

So entfernen Sie das Bild in ImageView:

title_image.setImageResource(-1);

Für mich geht das

0
Tobore Igbe

Wenn Sie die Unterstützungsbibliothek verwenden, erhalten Sie AppCompatImageView anstelle von ImageView, wodurch setImageResource(0) auf allen Geräten unterstützt wird. Sie sollten also auf die gleiche Weise wie setImageDrawable(null) und setImageBitmap(null) verwendet werden.

Ansonsten sollte es ab einer Android-Version gut funktionieren. Gemäß dem Code von Android und meinen Tests denke ich, dass es sicher sein sollte, setImageResource(0) von Android API 22 (5.1) zu verwenden. Sie können den Android-Code von API 22 vs API 21, hier sehen.

0

Das funktioniert für mich. 

emoji.setBackground(null);

Dies stürzt zur Laufzeit ab.

viewToUse.setImageResource(Android.R.color.transparent);  
0
sbchitra