不调用getDrawable方法检查ImageView是否有图片

Check if ImageView has image without calling getDrawable method

下一行抛出 OutOfMemoryException

if (null == myImage.getDrawable()){
  //...
}

是否有另一种方法来检查 ImageView 是否具有 Drawable/Bitmap?

在这种情况下,我要做的是在 ImageView 上使用 setTaggetTag。第一次在 xml 中将标签设置为空,每当您绑定任何可绘制对象时,使用 setTag().

为标签设置一些值

如果标签有一些值,假设 imageview 有一个 drawable,如果值为空则 imageview 没有 drawable。

希望对您有所帮助

这可能只能解决症状,但您可以尝试在您的 androidmanifest 应用程序标签中添加 android:largeHeap="true"

虽然你必须注意你的内存使用情况,这里有一个快速但肮脏的解决方案

try {
   if (myImage.getDrawable() == null)
     doFoo();
   else
     doBar();
 } catch (OutOfMemoryError e) {
   //the ImageView definetely had some large content
     doBar();
 }

这是解决方法。调用 imageview.getWidth() 或 getHeight()。如果值为 0,则不加载图像

你可以覆盖ImageView class 并在调用setDrawable 方法时填充一些布尔值。

public class CustomImageView extends ImageView {
    public boolean isImageSet = false;

    public void setImageBitmap(Bitmap bm) {
        super.setImageBitmap(bm);
        if(bm != null)
            isImageSet = true;
    }
}