我正在重复使用 ImageView
来显示数据,但有时候我没有值来显示。
那么,如何清除 Android 中的 ImageView
呢?
我尝试过:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
它们中没有一个清除了视图,它仍然显示先前的图像。
我正在重复使用 ImageView
来显示数据,但有时候我没有值来显示。
那么,如何清除 Android 中的 ImageView
呢?
我尝试过:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
它们中没有一个清除了视图,它仍然显示先前的图像。
我曾经使用dennis.sheppard的解决方案来完成这个任务:
viewToUse.setImageResource(0);
它可以工作,但没有文档说明,所以不清楚它是否会影响视图中的其他内容(如果您愿意,可以查看ImageView代码,我没有)。
我认为最好的解决方案是:
viewToUse.setImageResource(android.R.color.transparent);
我最喜欢这个解决方案,因为撤销状态没有什么棘手的问题,而且它做的事情也很清楚。
viewToUse.setImageResource(0);
没有生效,但 viewToUse.setImageResource(android.R.color.transparent);
生效了。 (Explanation: The first line of code did not work, but the second line of code using the resource ID for transparent color in the Android system worked.) - zionpi我曾遇到类似的问题,需要将ImageView完全从屏幕上删除。这里的某些答案给了我正确的方向,但最终调用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 ...
}
我曾尝试这样做,以清除ImageView中的图像和Drawable缓存
ImgView.setImageBitmap(null);
ImgView.destroyDrawingCache();
我希望这对你有用!
setImageResource(0)
或setImageResources(android.R.color.transparent)
),请检查当前图像是否作为背景使用了setBackgroundDrawable(...)
或类似的东西。如果您使用Glide,您可以像这样完成它。
Glide.with(yourImageView).clear(yourImageView)
yourImageView
应该是context
。 - mcy嘿,我知道我回答得非常晚,但想与大家分享一下:
重置图片时调用的方法必须与设置图片时调用的方法相同。
如果您最初是使用setImageResource()
在位图中设置图像,则要重置图像源,@dennis.sheepard的答案很好用。
例如:
我使用了setImageBitmap()
,因此设置setImageResource(0)
没有起作用,而是使用setImageBitmap(null)
。
我通过定义可绘制对象(类似 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);
这对我非常有效!
emoji.setBackground(null);
这段代码在运行时崩溃。
viewToUse.setImageResource(android.R.color.transparent);