android 图片资源受损,资源 - 如何在Android中清除ImageView?

资源 - 如何在Android中清除ImageView?

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

那么如何在Android中清除ImageView?

我试过了:

mPhotoView.invalidate();

mPhotoView.setImageBitmap(null);

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

15个解决方案

458 votes

我过去常常使用dennis.sheppard解决方案:

viewToUse.setImageResource(0);

它的工作原理但它没有被记录,所以如果它在视图中影响了其他东西,它是不是真的很清楚(你可以检查ImageView代码,如果你喜欢,我没有)。

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

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

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

Mario Lenci answered 2019-03-05T01:53:03Z

97 votes

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

imgView.setImageDrawable(null);

Kon answered 2019-03-05T01:53:30Z

77 votes

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

viewToUse.setImageResource(0);

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

dennis.sheppard answered 2019-03-05T01:54:02Z

17 votes

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

if (photoId == 0) {

viewToUse.setImageResource(R.drawable.ic_contact_list_picture);

} else {

// ... here is where they set an actual image ...

}

Daniel Lew answered 2019-03-05T01:54:27Z

10 votes

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

ImgView.setImageBitmap(null);

ImgView.destroyDrawingCache();

我希望这对你有用!

nandha answered 2019-03-05T01:54:58Z

9 votes

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

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

Brad English answered 2019-03-05T01:55:30Z

5 votes

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

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

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

例如,

我曾经使用setImageBitmap(),因此设置setImageResource(0)不起作用,而是使用了setImageBitmap(null)。

Ajay answered 2019-03-05T01:56:25Z

3 votes

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

android:shape="rectangle">

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

imageView.setImage(R.drawable.blank_white_shape);

这对我很有效!

kwasi answered 2019-03-05T01:57:04Z

1 votes

对于ListView项目图像,您可以在列表适配器中为“无图像”情况设置ImageView.setVisibility(View.INVISIBLE)或ImageView.setImageBitmap(null)。

Arvis answered 2019-03-05T01:57:30Z

1 votes

正如kwasi编写和golu编辑的那样,你可以使用透明而不是白色:

文件drawable/transparent.xml

在活动,视图等内:

view.setImageResource(R.drawable.transparent);

KitKat answered 2019-03-05T01:58:12Z

0 votes

要在ImageView中删除图像,请使用:

title_image.setImageResource(-1);

这个对我有用

Tobore Igbe answered 2019-03-05T01:59:02Z

0 votes

如果您使用支持库,则会获得setImageResource(0)而不是ImageView,它在所有设备上都支持setImageResource(0),因此您可以使用与使用setImageDrawable(null)和setImageBitmap(null)相同的方式

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

android developer answered 2019-03-05T01:59:43Z

0 votes

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

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

//然后设置图像

edit_countflag.setImageResource(R.drawable.flag_id);

Syed Danish Haider answered 2019-03-05T02:00:37Z

-1 votes

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

如果你不做以下事情?

imageview.setImageDrawable(this.getResources().getDrawable(R.drawable.icon_image));

imageview.setImageDrawable(getApplicationContext().getResources().getDrawable(R.drawable.icon_profile_image));

Aaron Newton answered 2019-03-05T02:01:56Z

-3 votes

尝试使用mPhotoView.setAlpha(0)使图像完全透明(使用255恢复)。

molnarm answered 2019-03-05T02:02:35Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值