How to clear an ImageView in Android?
AndroidAndroid ImageviewAndroid ResourcesAndroid ImageAndroid Problem Overview
I am reusing ImageView
s 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);