Ответ 1
imageViewOne.getVisibility() == 0
используйте это вместо:
imageViewOne.getDrawable() == null
Я устанавливаю изображение в ImageView в коде Android не в xml, но не могу понять, как проверить, было ли это изображение установлено или нет в java.
Пробовал с помощью imageViewOne.getVisibility() == 0
но он не работает
Если образ установлен в ImageView, я прикрепляю это изображение для отправки почты.
imageViewOne.getVisibility() == 0
используйте это вместо:
imageViewOne.getDrawable() == null
Обратите внимание, что если вы установили изображение через 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;
}
Правильный способ проверить, прикреплен ли 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
Вы можете сделать imageViewOne.getDrawable() для изображения, установленного в атрибуте src, что означает setImageResource/Bitmap. Или imageViewOne.getBackground() для атрибута background - значение 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");
}