Как проверить, прикреплен ли ImageView с изображением в android

Я устанавливаю изображение в ImageView в коде Android не в xml, но не могу понять, как проверить, было ли это изображение установлено или нет в java.

Пробовал с помощью imageViewOne.getVisibility() == 0 но он не работает

Если образ установлен в ImageView, я прикрепляю это изображение для отправки почты.

Ответ 1

imageViewOne.getVisibility() == 0

используйте это вместо:

imageViewOne.getDrawable() == null

Ответ 2

Обратите внимание, что если вы установили изображение через 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;
}

Ответ 3

Правильный способ проверить, прикреплен ли 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

Ответ 4

Вы можете сделать imageViewOne.getDrawable() для изображения, установленного в атрибуте src, что означает setImageResource/Bitmap. Или imageViewOne.getBackground() для атрибута background - значение setBackground.

Ответ 5

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