Как очистить ImageView в Android?

Я повторно использовать ImageViews для моих дисплеев, но в какой-то момент у меня нет значений, чтобы поместить его.

Итак, как очистить ImageView в Android?

Я пробовал:

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

ни один из них не очистил вид, он по-прежнему показывает предыдущее изображение.

15 ответов


Я делал это с помощью Дэннис.Шеппард!--4--> устранение:

viewToUse.setImageResource(0);

он работает, но он не документирован, поэтому не совсем ясно, влияет ли он на что-то еще в представлении (вы можете проверить код ImageView если хотите, я этого не делал).

Я думаю, что лучшее решение это:

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

мне нравится это решение больше всего, потому что нет ничего сложного в возврате состояния, и также ясно, что он делает.


У меня была аналогичная проблема, когда мне нужно было в основном удалить ImageViews с экрана полностью. Некоторые из ответов здесь привели меня в правильном направлении, но в конечном итоге вызов setImageDrawable () работал для меня:

imgView.setImageDrawable(null);

Я знаю, что это старый, но я смог сделать это с

viewToUse.setImageResource(0);

не похоже, что это должно работать, но я попробовал его по прихоти, и он работал отлично.


похоже, что вы хотите, чтобы изображение по умолчанию устанавливало ImageView, когда оно не отображает другое изображение. Вот как это делает приложение Contacts:

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

я попробовал это для очистки изображения и DrawableCache в ImageView

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

Я надеюсь, что это работает для вас !


Если ни одно из этих решений не очищает изображение, которое вы уже установили (особенно setImageResource(0) или setImageResources(android.R.color.transparent), убедитесь, что текущее изображение не установлено в качестве фона с помощью setBackgroundDrawable(...) или что-то подобное.

ваш код просто установит ресурс изображения на переднем плане на что-то прозрачное перед этим фоновым изображением, которое вы установили и все равно покажете.


Эй, я знаю, что я очень опоздал на этот ответ, но просто подумал, что я должен поделиться этим,

метод для вызова при сбросе изображения должен быть тем же самым методом, который U вызывал, когда u устанавливал его.

когда вы хотите сбросить Источник изображения @dennis.sheepard ответ работает нормально, только если U изначально устанавливает изображение в растровом изображении с помощью setImageResource()

например,

я использовал setImageBitmap() и, следовательно, параметр setImageResource(0) didn работа, вместо этого я использовал setImageBitmap(null).


я смог достичь этого, определив drawable (что-то вроде blank_white_shape.XML-код):

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

затем, когда я хочу очистить представление изображения, я просто вызываю

 imageView.setImage(R.drawable.blank_white_shape);

это прекрасно работает для меня!


для изображения элемента ListView вы можете установить ImageView.setVisibility(View.INVISIBLE) или ImageView.setImageBitmap(null) в адаптере списка для случая "без изображения".


As временем написал голу редактировать, вы можете использовать прозрачный, а не белый:

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>

внутри активности, просмотра и т. д.:

view.setImageResource(R.drawable.transparent);

чтобы удалить изображение в ImageView, используйте:

title_image.setImageResource(-1);

это работает для меня


если вы используете библиотеку поддержки, вы получаете AppCompatImageView вместо ImageView , которая обслуживает setImageResource(0) на всех устройствах, поэтому вы должны быть хорошо с помощью ее так же, как с помощью setImageDrawable(null) и setImageBitmap(null)

в противном случае, он должен работать нормально, начиная с версии Android. Согласно коду Android и согласно моим тестам, я думаю, что это должно быть безопасно использовать setImageResource(0) из Android API 22 (5.1). Вы можете увидеть код Android API 22 vs API 21, здесь


я столкнулся с той же проблемой, я изменил цвет фона вида на цвет фона макета u может сделать так:

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

/ / затем установите изображение

edit_countflag.setImageResource(R.drawable.flag_id);

могу ли я просто указать, что вы все пытаетесь установить и int, где он ожидает drawable.

вы не должны делать следующее?

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

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

попробовать mPhotoView.setAlpha(0) чтобы сделать изображение полностью прозрачным (восстановление с помощью 255).