如何在Android中清除ImageView?

时间:2010-05-18 16:35:07

标签: android resources android-imageview android-image clear

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

那么如何清除Android中的ImageView

我试过了:

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

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

19 个答案:

答案 0 :(得分:481)

我曾经使用dennis.sheppard解决方案:

viewToUse.setImageResource(0);

它有效,但没有记录,因此如果它在视图中影响其他内容,则无法清楚(如果您愿意,可以查看ImageView code,我没有)。

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

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

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

答案 1 :(得分:105)

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

imgView.setImageDrawable(null);

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

答案 2 :(得分:79)

我知道这是旧的,但我能够用

完成这个
viewToUse.setImageResource(0);

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

答案 3 :(得分:17)

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

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

答案 4 :(得分:12)

我试过在ImageView中清除Image和DrawableCache

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

我希望这适合你!

答案 5 :(得分:9)

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

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

答案 6 :(得分:5)

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

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

如果您想要重置图片来源@ dennis.sheepard ,只有当您最初使用setImageResource()

在位图中设置图片时,答案才能正常工作

例如,

我使用了setImageBitmap()因此设置setImageResource(0)没有用,而是使用了setImageBitmap(null)

答案 7 :(得分:3)

我能够通过定义一个可绘制的(类似于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);

这对我很有效!

答案 8 :(得分:2)

kwasi编写并编辑golu时,您可以使用透明而不是白色:

档案drawable/transparent.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@android:color/transparent"/>
</shape>

在活动,视图等内:

view.setImageResource(R.drawable.transparent);

答案 9 :(得分:1)

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

答案 10 :(得分:1)

如果使用滑行功能,您可以这样做。

Glide.with(yourImageView).clear(yourImageView)

答案 11 :(得分:0)

我也尝试使用ImageView.setImageRessource(0)删除ImageView的图像,但是它对我不起作用。
幸运的是,我在日志中收到了此消息:

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

答案 12 :(得分:0)

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

title_image.setImageResource(-1);

它对我有用

答案 13 :(得分:0)

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

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

答案 14 :(得分:0)

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

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

//然后设置图像

edit_countflag.setImageResource(R.drawable.flag_id);

答案 15 :(得分:0)

这对我有用。

emoji.setBackground(null);

这在运行时崩溃。

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

答案 16 :(得分:-1)

editText.setText("");

imageView.setImageResource(0);

答案 17 :(得分:-1)

我可以指出你想要设置的内容以及预期可绘制的int。

你不应该做以下事吗?

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

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

答案 18 :(得分:-3)

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