Как очистить ImageView в Android?
Я повторно использовать ImageView
s для моих дисплеев, но в какой-то момент у меня нет значений, чтобы поместить его.
Итак, как очистить 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).