如何检查ImageView是否附加了android中的图像

Muk*_*nda 47 android

我在Android代码中将图像设置为ImageView而不是xml,但无法确定如何检查该图像是否已在java中设置.

试过imageViewOne.getVisibility() == 0 但它不起作用

如果图像已设置为ImageView,那么我将附加该图像以发送邮件.

PC.*_*PC. 131

imageViewOne.getVisibility()== 0

改用它:

imageViewOne.getDrawable() == null
Run Code Online (Sandbox Code Playgroud)

  • 如果 ImageView 有占位符 img 它将不起作用 (2认同)

小智 36

请注意,如果您通过ImageView.setImageBitmap(BITMAP)它在内部设置图像,BitmapDrawable即使您通过也会在内部创建新图像null.在这种情况下,检查imageViewOne.getDrawable() == null随时都是假的.要了解是否设置了图像,您可以执行以下操作:

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是最完整的答案.所以请记住,如果想要从ImageView中完全删除drawable,那么setImageDrawable(null)比setImageBitmap(null)更好.如果您始终如一地执行此操作,则可以依赖getDrawable()返回null. (4认同)

Jor*_*sys 5

检查 ImageView 是否附加图像的正确方法是:

\n\n
 if (imageView.getDrawable() == null){\n       //Image doesn\xc2\xb4t exist.\n   }else{\n        //Image Exists!.\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n

一些将图像加载到 ImageView 的方法(例如使用 Glide 或 Picasso)有一点延迟,因此我们必须等待几毫秒来检查:

\n\n
    //Load Image.\n    Glide.with(this)\n            .load(imageURL)\n            .into(imageView);\n\n   //Wait for 500 ms then check!.\n    Handler handler = new Handler();\n    handler.postDelayed(new Runnable() {\n        @Override\n        public void run() {\n           if (imageView.getDrawable() == null){\n              //Image doesn\xc2\xb4t exist.\n           }else{\n              //Image Exists!.\n           }\n        }\n    }, 500\n
Run Code Online (Sandbox Code Playgroud)\n