如何在Android中清除ImageView?

309

我正在重复使用 ImageView 来显示数据,但有时候我没有值来显示。

那么,如何清除 Android 中的 ImageView 呢?

我尝试过:

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

它们中没有一个清除了视图,它仍然显示先前的图像。


1
我建议在没有值的情况下加载默认图像。 - Praveen
3
我没有默认图片,只有一个背景。我只需要保留这个背景。 - Pentium10
我认为这里需要更改已接受的答案。在stackoverflow上是否有任何规定可以将已接受的答案更改/移动到实际答案(或更好的答案)而不是“解决方法”答案?因为很多用户(如我)会选择已接受的答案,而不是更好的答案。 - Shirish Herwade
1
@ShirishHerwade 好的,已更改。 - Pentium10
我曾经遇到过同样的问题,我是这样解决的:https://dev59.com/dmkx5IYBdhLWcg3wA_tS#50448536 - Syed Danish Haider
我会创建一个默认的图像资源,并在一个 if 语句下,当图像应该被设置在第一个位置时,在 else 子句下编写以下内容:imageView.setImageResource(R.drawable.default_resource.jpg); - goldenmaza
18个回答

2

正如kwasi所写,golu编辑,您可以使用transparent代替white:

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

2

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


1
如果您使用支持库,则可以使用AppCompatImageView而不是ImageView,它支持在所有设备上使用setImageResource(0),因此您可以像使用setImageDrawable(null)setImageBitmap(null)一样使用它。
否则,从某个Android版本开始应该也能正常工作。根据Android的代码和我的测试,我认为从Android API 22(5.1)开始使用setImageResource(0)应该是安全的。您可以查看API 22与API 21的Android代码,这里

0

我曾经遇到过同样的问题,我将视图的背景颜色更改为布局的背景颜色,你也可以这样做:

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

//然后设置图片

edit_countflag.setImageResource(R.drawable.flag_id);

0

要移除 ImageView 中的图像,请使用:

title_image.setImageResource(-1);

这对我有效。


0

我尝试使用ImageView.setImageRessource(0)来删除ImageView的图像,但对我没起作用。
幸运地是,我在日志中得到了这个消息:

<code>Caused by: java.lang.IllegalStateException: The specified child already has a parent. 
You must call removeView() on the child's parent first.
</code>

所以假设 “layoutmanager” 是你的布局实例,那么你需要这样做:
RelativeLayout layoutManager = new RelativeLayout(this);
ImageView image = new ImageView(this);

// this line worked for me
layoutManager.removeView(image);

-1

我可以指出你们都试图将一个int设置为drawable。

难道你们不应该这样做吗?

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

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

-2

editText.setText("");

imageView.setImageResource(0);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接