How to clear an ImageView in Android?

AndroidAndroid ImageviewAndroid ResourcesAndroid Image

Android Problem Overview


I am reusing ImageViews for my displays, but at some point I don't have values to put it.

So how to clear an ImageView in Android?

I've tried:

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

None of them have cleared the view, it still shows previous image.

Android Solutions


Solution 1 - Android

I used to do it with the dennis.sheppard solution:

viewToUse.setImageResource(0);

it works but it is not documented so it isn't really clear if it effects something else in the view (you can check the ImageView code if you like, i didn't).

I think the best solution is:

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

I like this solution the most cause there isn't anything tricky in reverting the state and it's also clear what it is doing.

Solution 2 - Android

I had a similar problem, where I needed to basically remove ImageViews from the screen completely. Some of the answers here led me in the right direction, but ultimately calling setImageDrawable() worked for me:

imgView.setImageDrawable(null);

(As mentioned in the comment, such usage is documented in the official docs: ImageView#setImageDrawable.)

Solution 3 - Android

I know this is old, but I was able to accomplish this with

viewToUse.setImageResource(0);

Doesn't seem like it should work, but I tried it on a whim, and it worked perfectly.

Solution 4 - Android

It sounds like what you want is a default image to set your ImageView to when it's not displaying a different image. This is how the Contacts application does it:

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

Solution 5 - Android

I tried this for to clear Image and DrawableCache in ImageView

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

I hope this works for you !

Solution 6 - Android

If none of these solutions are clearing an image you've already set (especially setImageResource(0) or setImageResources(android.R.color.transparent), check to make sure the current image isn't set as background using setBackgroundDrawable(...) or something similar.

Your code will just set the image resource in the foreground to something transparent in front of that background image you've set and will still show.

Solution 7 - Android

if you use glide you can do it like this.

Glide.with(yourImageView).clear(yourImageView)

Solution 8 - Android

Hey i know i am extremely late to this answer, but just thought i must share this,

The method to call when u reset the image must be the same method that u called while u were setting it.

When u want to reset the image source @dennis.sheepard answer works fine only if u are originally setting the image in the bitmap using setImageResource()

for instance,

i had used setImageBitmap() and hence setting setImageResource(0) didn work, instead i used setImageBitmap(null).

Solution 9 - Android

I was able to achieve this by defining a drawable (something like blank_white_shape.xml):

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

Then when I want to clear the image view I just call

 imageView.setImage(R.drawable.blank_white_shape);

This works beautifully for me!

Solution 10 - Android

For ListView item image you can set ImageView.setVisibility(View.INVISIBLE) or ImageView.setImageBitmap(null) in list adapter for "no image" case.

Solution 11 - Android

As kwasi wrote and golu edited, you can use transparent, instead of white:

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

Inside an activity, view, etc:

view.setImageResource(R.drawable.transparent);

Solution 12 - Android

This works for me.

emoji.setBackground(null);

This crashes in runtime.

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

Solution 13 - Android

To remove the image in ImageView use:

title_image.setImageResource(-1);

it works for me

Solution 14 - Android

If you use the support library, you get AppCompatImageView instead of ImageView , which supports setImageResource(0) on all devices, so you should be fine with using it the same way as using setImageDrawable(null) and setImageBitmap(null)

Otherwise, it should work fine starting from some Android version. According to the code of Android and according to my tests, I think it should be safe to use setImageResource(0) from Android API 22 (5.1). You can see the Android code of API 22 vs API 21, here

Solution 15 - Android

I was facing same issue i changed background color of view to layout background color u can do like this:

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

//then set the image

edit_countflag.setImageResource(R.drawable.flag_id);

Solution 16 - Android

I tried to remove the Image of the ImageView too by using ImageView.setImageRessource(0) but it didn't work for me.
Luckily I got this message in the logs:

Caused by: java.lang.IllegalStateException: The specified child already has a parent. 
You must call removeView() on the child's parent first.

So let's say, layoutmanager is your instance for the layout, than you need to do that:

RelativeLayout layoutManager = new RelativeLayout(this);
ImageView image = new ImageView(this);

// this line worked for me
layoutManager.removeView(image);

Solution 17 - Android

Can i just point out what you are all trying to set and int where its expecting a drawable.

should you not be doing the following?

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

imageview.setImageDrawable(getApplicationContext().getResources().getDrawable(R.drawable.icon_profile_image));

Solution 18 - Android

editText.setText("");

imageView.setImageResource(0);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPentium10View Question on Stackoverflow
Solution 1 - AndroidMario LenciView Answer on Stackoverflow
Solution 2 - AndroidKonView Answer on Stackoverflow
Solution 3 - Androiddennis.sheppardView Answer on Stackoverflow
Solution 4 - AndroidDan LewView Answer on Stackoverflow
Solution 5 - AndroidNandhaView Answer on Stackoverflow
Solution 6 - AndroidBrad EnglishView Answer on Stackoverflow
Solution 7 - AndroidMojtaba HaddadiView Answer on Stackoverflow
Solution 8 - AndroidAjayView Answer on Stackoverflow
Solution 9 - AndroidkwasiView Answer on Stackoverflow
Solution 10 - AndroidArvisView Answer on Stackoverflow
Solution 11 - AndroidKitKatView Answer on Stackoverflow
Solution 12 - AndroidsbchitraView Answer on Stackoverflow
Solution 13 - AndroidTobore IgbeView Answer on Stackoverflow
Solution 14 - Androidandroid developerView Answer on Stackoverflow
Solution 15 - AndroidSyed Danish HaiderView Answer on Stackoverflow
Solution 16 - AndroidTornaxO7View Answer on Stackoverflow
Solution 17 - AndroidAaron NewtonView Answer on Stackoverflow
Solution 18 - AndroidFelizGuruView Answer on Stackoverflow