我正在将ImageView
s用于显示,但是在某些时候我没有值可言。
那么如何清除ImageView
Android中的?
我试过了:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
他们都没有清除视图,它仍然显示以前的图像。
我正在将ImageView
s用于显示,但是在某些时候我没有值可言。
那么如何清除ImageView
Android中的?
我试过了:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
他们都没有清除视图,它仍然显示以前的图像。
Answers:
我曾经使用dennis.sheppard解决方案来做到这一点:
viewToUse.setImageResource(0);
它可以工作,但没有记录,因此尚不清楚它是否会影响视图中的其他内容(如果您愿意,可以查看ImageView代码,我没有)。
我认为最好的解决方案是:
viewToUse.setImageResource(android.R.color.transparent);
我最喜欢这种解决方案,因为恢复状态没有任何棘手的事情,而且也很清楚它在做什么。
viewToUse.setImageResource(0);
没有用,但是viewToUse.setImageResource(android.R.color.transparent);
有用。
我有一个类似的问题,我需要从屏幕上完全删除ImageViews。这里的一些答案将我引向正确的方向,但最终调用setImageDrawable()对我有用:
imgView.setImageDrawable(null);
(如评论中所述,这种用法记录在官方文档:ImageView#setImageDrawable中。)
我知道这已经很老了,但是我能够通过
viewToUse.setImageResource(0);
似乎它不应该工作,但是我一时兴起尝试了一下,并且效果很好。
听起来好像您想要的是默认图像,以便在不显示其他图像时将ImageView设置为默认图像。这是“联系人”应用程序的执行方式:
if (photoId == 0) {
viewToUse.setImageResource(R.drawable.ic_contact_list_picture);
} else {
// ... here is where they set an actual image ...
}
嘿,我知道我对这个答案非常迟,但是以为我必须分享这个答案,
您重置图像时要调用的方法必须与设置图像时调用的方法相同。
当您想重置图像源@ dennis.sheepard答案仅在您最初使用以下方法图中设置图像时有效setImageResource()
例如,
我用过setImageBitmap()
,因此设置setImageResource(0)
没有用,而是用了setImageBitmap(null)
。
如果您使用支持库,则获取AppCompatImageView
而不是ImageView
,该库setImageResource(0)
在所有设备上均受支持,因此使用它的方式应该与使用和相同setImageDrawable(null)
,setImageBitmap(null)
否则,从某些Android版本开始应该可以正常工作。根据Android的代码和我的测试,我认为setImageResource(0)
从Android API 22(5.1)使用它应该是安全的。您可以在此处查看 API 22 vs API 21的Android代码
我面临着同样的问题,我将视图的背景色更改为布局背景色,您可以这样做:
edit_countflag.setBackgroundColor(Color.parseColor("#ffffff"));
//然后设置图片
edit_countflag.setImageResource(R.drawable.flag_id);
我也尝试通过使用删除ImageView的图像,ImageView.setImageRessource(0)
但是它对我不起作用。
幸运的是,我在日志中收到此消息:
Caused by: java.lang.IllegalStateException: The specified child already has a parent.
You must call removeView() on the child's parent first.
假设layoutmanager
您是版式的实例,而不是您需要这样做的实例:
RelativeLayout layoutManager = new RelativeLayout(this);
ImageView image = new ImageView(this);
// this line worked for me
layoutManager.removeView(image);