如何在Android中清除ImageView?

问题描述 投票:240回答:16

我正在重复使用ImageViews作为我的显示器,但在某些时候我没有值得把它放在上面。

那么如何清除Android中的ImageView

我试过了:

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

他们都没有清除视图,它仍然显示以前的图像。

android resources android-imageview android-image clear
16个回答
502
投票

我曾经用dennis.sheppard解决方案做到这一点:

viewToUse.setImageResource(0);

它有效,但它没有记录,所以它不是很清楚它是否影响视图中的其他东西(你可以检查ImageView code,如果你喜欢,我没有)。

我认为最好的解决方案是:

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

我最喜欢这个解决方案,因为在恢复状态时没有任何棘手的问题,而且它也清楚它正在做什么。


1
投票

对于ListView项目图像,您可以在列表适配器中为“无图像”情况设置goludrawable/transparent.xml


0
投票

要在ImageView中删除图像,请使用: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@android:color/transparent"/> </shape> 这个对我有用


0
投票

如果你使用支持库,你得到view.setImageResource(R.drawable.transparent); 而不是ImageView.setVisibility(View.INVISIBLE),它支持所有设备上的ImageView.setImageBitmap(null),所以你可以使用它与使用title_image.setImageResource(-1);AppCompatImageView相同的方式

否则,它应该从一些Android版本开始工作正常。根据Android的代码,根据我的测试,我认为使用Android API 22(5.1)中的ImageView应该是安全的。你可以看到API 22与API 21,setImageResource(0)的Android代码


0
投票

我面临同样的问题我改变了背景颜色的视图布局背景颜色你可以这样做:

setImageDrawable(null)

//然后设置图像

setImageBitmap(null)

0
投票

这适合我。

setImageResource(0)

这在运行时崩溃了。

here

-1
投票

我可以指出你想要设置的东西和它期望可绘制的int。

如果你不做以下事情?

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

113
投票

我遇到了类似的问题,我需要完全从屏幕上删除ImageViews。这里的一些答案让我朝着正确的方向前进,但最终调用setImageDrawable()为我工作:

imgView.setImageDrawable(null);

(如评论中所述,此类用法记录在官方文档中:ImageView#setImageDrawable。)


79
投票

我知道这已经过时了,但我能够做到这一点

viewToUse.setImageResource(0);

似乎它不应该工作,但我一时兴起尝试,它完美地工作。


16
投票

听起来你想要的是一个默认图像,将ImageView设置为不显示不同的图像。这是Contacts应用程序的功能:

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

12
投票

我试过这个来清除ImageView中的Image和DrawableCache

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

我希望这对你有用!


9
投票

如果这些解决方案都没有清除您已设置的图像(尤其是setImageResource(0)setImageResources(android.R.color.transparent),请检查以确保当前图像未使用setBackgroundDrawable(...)或类似设置为背景。

您的代码只会将前景中的图像资源设置为您已设置并仍将显示的背景图像前面的透明内容。


5
投票

嘿,我知道我对这个答案非常迟,但只是认为我必须分享这个,

重置图像时调用的方法必须与您在设置图像时调用的方法相同。

当你想重置图像源@ dennis.sheepard只有当你最初使用setImageResource()在位图中设置图像时,答案才能正常工作

例如,

我曾经使用过qazxsw poi,因此设置qazxsw poi不起作用,而是使用setImageBitmap()


3
投票

我能够通过定义drawable(类似blank_white_shape.xml)来实现这一点:

setImageResource(0)

然后,当我想清除图像视图时,我只是打电话

setImageBitmap(null)

这对我很有效!


2
投票

正如qazxsw poi写的和qazxsw poi编辑器一样,你可以使用透明而不是白色:

档案<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);

在活动,视图等内:

kwasi
© www.soinside.com 2019 - 2024. All rights reserved.