我重用ImageViews为我的显示,但在某些时候,我没有值把它。
那么如何在Android中清除ImageView呢?
我试过了:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
他们都没有清除视图,它仍然显示以前的图像。
我重用ImageViews为我的显示,但在某些时候,我没有值把它。
那么如何在Android中清除ImageView呢?
我试过了:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
他们都没有清除视图,它仍然显示以前的图像。
当前回答
如果你使用支持库,你会得到AppCompatImageView而不是ImageView,它在所有设备上支持setImageResource(0),所以你应该可以像使用setImageDrawable(null)和setImageBitmap(null)一样使用它。
否则,从某些Android版本开始,它应该可以正常工作。根据Android的代码和我的测试,我认为从Android API 22(5.1)使用setImageResource(0)应该是安全的。你可以在这里看到API 22和API 21的Android代码
其他回答
如果这些解决方案都没有清除你已经设置的图像(特别是setImageResource(0)或setImageResources(android.R.color.transparent),检查以确保当前图像没有设置为背景使用setBackgroundDrawable(…)或类似的东西。
你的代码只是将前景中的图像资源设置为你所设置的背景图像前面的一些透明的东西,并且仍然会显示。
我能指出你都试图设置和int它期望一个可绘制。
你不应该做以下事情吗?
imageview.setImageDrawable(this.getResources().getDrawable(R.drawable.icon_image));
imageview.setImageDrawable(getApplicationContext().getResources().getDrawable(R.drawable.icon_profile_image));
听起来好像你想要的是一个默认图像,当ImageView没有显示不同的图像时设置它。联系人应用程序是这样做的:
if (photoId == 0) {
viewToUse.setImageResource(R.drawable.ic_contact_list_picture);
} else {
// ... here is where they set an actual image ...
}
我试图清除ImageView中的Image和DrawableCache
ImgView.setImageBitmap(null);
ImgView.destroyDrawingCache();
我希望这对你有用!
嘿,我知道我回答这个问题已经很晚了,但我想我必须分享这个,
当你重置图像时调用的方法必须与你设置图像时调用的方法相同。
当你想重置图片源@dennis。只有当你最初使用setImageResource()在位图中设置图像时,shepard回答才能正常工作。
例如,
我已经使用setImageBitmap(),因此设置setImageResource(0)没有工作,而不是我使用setImageBitmap(null)。