Как очистить 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).