如何检查一个ImageView是否与Android中的图像附加
我设置一个图像ImageView在android代码不是在xml中,但不能弄清楚如何检查该图像是否已被设置在或不在java中。
尝试imageViewOne.getVisibility() == 0
但它不工作
如果图像已被设置为ImageView然后我附加该图像发送邮件。
imageViewOne.getVisibility()== 0
用这个代替:
imageViewOne.getDrawable() == null
请注意,如果通过ImageView.setImageBitmap(BITMAP)
设置图像,即使您传递null
它也会在内部创build一个新的BitmapDrawable
。 在这种情况下,随时检查imageViewOne.getDrawable() == null
是否为false。 要了解是否设置了图像,您可以执行以下操作:
private boolean hasImage(@NonNull ImageView view) { Drawable drawable = view.getDrawable(); boolean hasImage = (drawable != null); if (hasImage && (drawable instanceof BitmapDrawable)) { hasImage = ((BitmapDrawable)drawable).getBitmap() != null; } return hasImage; }
检查ImageView是否与图像相连的正确方法是:
if (imageView.getDrawable() == null){ //Image doesn´t exist. }else{ //Image Exists!. }
有些方法像使用Glide或Picasso一样将图像加载到ImageView中有一些延迟,所以我们必须等待几毫秒来检查:
//Load Image. Glide.with(this) .load(imageURL) .into(imageView); //Wait for 500 ms then check!. Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { if (imageView.getDrawable() == null){ //Image doesn´t exist. }else{ //Image Exists!. } } }, 500
您可以为您在src属性上设置的图像(即setImageResource / Bitmap)设置imageViewOne.getDrawable()。 或imageViewOne.getBackground()为背景属性 – 意思是setBackground。
if (img_like.getTag() != null && img_like.getTag().toString().equals("red")) { img_like.setImageResource(R.drawable.heart); img_like.setTag("heart"); } else { img_like.setImageResource(R.drawable.red); img_like.setTag("red"); }