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



我在android代码中将图像设置为ImageView,而不是在xml中,但不知道如何检查该图像是否已在java中设置。

尝试使用imageViewOne.getVisibility() == 0但不起作用

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

imageViewOne.getVisibility()==0

改为使用这个:

imageViewOne.getDrawable() == null

来自文件:

/**
*获取当前Drawable,如果没有Drawable,则为null
*已分配
*
*@返回视图的可绘制项,如果没有可绘制项则返回null
*已分配
*
*/
public Drawable getDrawable(){

}

请注意,如果通过ImageView.setImageBitmap(BITMAP)设置图像,即使通过null,它也会在内部创建一个新的BitmapDrawable。在这种情况下,检查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;
}

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

 if (imageView.getDrawable() == null){
       //Image doesn´t exist.
   }else{
        //Image Exists!.
 }

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

    //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
ImageView myImage = (ImageView) findViewById(R.id.imageView);
if (myImage.getDrawable() == null){
//The imageView is empty
} else{ 

// The imageView is occupied.
}

ImageView myImage = (ImageView) findViewById(R.id.imageView);
if ( null == myImage.getDrawable()){
//The imageView is empty
} else{ 

// The imageView is occupied.
}

您可以对在src属性上设置的图像执行imageViewOne.getDrawable(),即setImageResource/Bitmap。或imageViewOne.getBackground()作为背景属性,即setBackground。

当任何可绘制的图片都在您的imageview中时,以及在从库或任何位置添加图像后,您也可以执行此操作。试试这个

(imgAdd.drawable.constantState == resources.getDrawable(R.drawable.user_new).constantState) -> {
                    Snackbar.make(view, "Please Add Product Image",
                        Snackbar.LENGTH_SHORT).show()
                }

在Xamarin Android imageViewOne.Drawable == null

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

最新更新