Как очистить ImageView в Android?
Я повторно использовать ImageViews для моих дисплеев, но в какой-то момент у меня нет значений, чтобы положить его.
Итак, как очистить ImageView в Android?
Я пробовал:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
ни один из них не очистил вид, он по-прежнему показывает предыдущее изображение.
15 ответов:
раньше я делал это с Дэннис.Шеппард устранение:
viewToUse.setImageResource(0);он работает, но он не документирован, поэтому не совсем ясно, влияет ли он на что-то еще в представлении (вы можете проверить ImageView code если хотите, я этого не делал).
Я думаю, что лучшее решение это:
viewToUse.setImageResource(android.R.color.transparent);мне нравится это решение больше всего, потому что нет ничего сложного в возврате состояния, и также ясно, что он делает.
У меня была аналогичная проблема, где мне нужно было в основном удалить ImageViews с экрана полностью. Некоторые из ответов здесь привели меня в правильном направлении, но в конечном итоге вызов setImageDrawable() работал для меня:
imgView.setImageDrawable(null);
Я знаю, что это старый, но я был в состоянии сделать это с
viewToUse.setImageResource(0);не похоже, что это должно работать, но я попробовал его по прихоти, и он работал отлично.
похоже, что вы хотите, чтобы изображение по умолчанию устанавливало ваш ImageView, когда оно не отображает другое изображение. Вот как это делает приложение "Контакты":
if (photoId == 0) { viewToUse.setImageResource(R.drawable.ic_contact_list_picture); } else { // ... here is where they set an actual image ... }
Я попытался это для того, чтобы четкое изображение и DrawableCache в книги
ImgView.setImageBitmap(null); ImgView.destroyDrawingCache();Я надеюсь, что это работает для вас !
Если ни одно из этих решений не очищает изображение, которое вы уже установили (особенно
setImageResource(0)илиsetImageResources(android.R.color.transparent), убедитесь, что текущее изображение не установлено в качестве фона с помощьюsetBackgroundDrawable(...)или что-то подобное.ваш код просто установит ресурс изображения на переднем плане на что-то прозрачное перед этим фоновым изображением, которое вы установили и все равно покажете.
Эй, я знаю, что я очень поздно к этому ответу, но просто подумал, что я должен поделиться этим,
метод, вызываемый при сбросе изображения u, должен быть тем же методом, который U вызывал, когда u устанавливал его.
когда вы хотите сбросить Источник изображения @dennis.sheepard ответ работает нормально, только если вы изначально устанавливаете изображение в растровом изображении с помощью
setImageResource()например,
я использовал
setImageBitmap()и, следовательно, параметрsetImageResource(0)не работа, вместо этого я использовал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)в списке адаптер для случая" без изображения".
как временем написал голу редактировать, вы можете использовать прозрачный, а не белый:
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>внутри действия, представления и т. д.:
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).
Comments