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



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

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

Я пробовал:

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

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

243   15  

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).

    Ничего не найдено.

Добавить ответ:
Отменить.