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

时间:2015-03-17 13:27:30

标签: android android-layout android-view drawable

以下行抛出OutOfMemoryException

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

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

5 个答案:

答案 0 :(得分:1)

在这种情况下,我要做的是在setTag上使用getTagImageView。第一次在xml中将标记设置为空,每当绑定任何drawable时,使用setTag().

为标记设置一些值

如果tag有一些值,则假设imageview具有drawable,如果该值为空,则imageview没有drawable。

希望这有助于你

答案 1 :(得分:1)

你必须注意你的内存使用情况,这是一个快速而肮脏的解决方案

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

当setDrawable方法调用时,您可以覆盖ImageView类并填充一些布尔值。

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

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

答案 4 :(得分:0)

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