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

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

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

Я пробовал:

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

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

Ответ 1

Я делал это с помощью решения dennis.sheppard:

viewToUse.setImageResource(0);

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

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

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

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

Ответ 2

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

imgView.setImageDrawable(null);

(Как упомянуто в комментарии, такое использование задокументировано в официальных документах: ImageView # setImageDrawable.)

Ответ 3

Я знаю, что это старо, но я смог выполнить это с помощью

viewToUse.setImageResource(0);

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

Ответ 4

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

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

Ответ 5

Я попробовал это, чтобы очистить Image и DrawableCache в ImageView

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

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

Ответ 6

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

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

Ответ 7

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

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

Когда u хочет reset, ответ image @dennis.sheepard работает отлично, только если u изначально устанавливает изображение в растровое изображение, используя setImageResource()

например,

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

Ответ 8

Я смог достичь этого, указав 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);

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

Ответ 9

Как kwasi написал и golu отредактировал, вы можете использовать прозрачный, а не белый

Файл 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);

Ответ 10

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

Ответ 11

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

title_image.setImageResource(-1);

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

Ответ 12

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

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

Ответ 13

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

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

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

edit_countflag.setImageResource(R.drawable.flag_id);

Ответ 14

Это работает для меня.

emoji.setBackground(null);

Это вылетает во время выполнения.

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

Ответ 15

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

Если вы не выполняете следующее?

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

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

Ответ 16

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