imageView.setImageBitmap图像空白(Android 4.4)

时间:2015-05-01 10:41:17

标签: android imageview

我有一个想要从jpg文件(照片)填充的ImageView。我首先检查文件是否存在,然后使用setImageBitmap加载ImageView,但ImageView仍为空白。我已经转储了logcat,并没有引发异常。我还调试了代码来检查图像文件是否存在,它确实存在。我正在测试运行Android 4.4.2的Galaxy S4。有问题的图像文件位于外部SD卡上,因此我在AndroidManifest中设置了android.permission.READ_EXTERNAL_STORAGE权限。

我在StackOverflow和其他地方都阅读过这类问题的大量其他引用。其中一个建议在setImageBitmap之后添加imageView.invalidate(),我试过(见下文),但它没有帮助。有没有人有其他想法?

在下面的代码中,调试器显示具有此值的imageLocation字符串: /storage/extSdCard/DCIM/Camera/12345.jpg。

    File imageFile = new File(imageLocation);
    if (imageFile.exists()) {   
        Bitmap bm = BitmapFactory.decodeFile(imageLocation);
        imageView.setImageBitmap(bm);
        imageView.invalidate();
    }

1 个答案:

答案 0 :(得分:1)

如果您的代码采用onCreate()的Activity方法,则它将无法正常工作。

只需将代码放入Button的Click事件之类的任何其他事件中,图像就会出现:

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me"
        android:onClick="ShowImage"/>

只需在您的“活动”中编写一个方法,如下所示:

public void ShowImage(View view)
{
     File imageFile = new File(imageLocation);
     if (imageFile.exists())
     {
        Bitmap bm = BitmapFactory.decodeFile(imageLocation);
        imageView.setImageBitmap(bm);
     }
}

在我编码时有效。
我希望它也对您有用。 :-)