setImageDrawable 没有在 API 23 上设置图像

setImageDrawable did not set image on API23

我正在尝试在 Android API 上为我的 CircleImageView 设置图像 23. 我从设备内存中获取图像路径并将此字符串路径存储到数据库:

<de.hdodenhof.circleimageview.CircleImageView
  android:id="@+id/fragment_edit_picture"
  android:layout_width="150dp"
  android:layout_height="150dp"
  android:layout_gravity="center"
  android:layout_margin="5dp"
  android:src="@mipmap/ic_launcher"
  android:onClick="selectFromGallery"
  app:civ_border_width="2dp"
/>

它可以在 API 19 及之前的版本上运行,但不能在 Android 版本 API 23 的 Genymotion 虚拟设备上运行。所选图像未显示在图片视图。我以这种方式将图像设置为 ImageView:

mCurrentImagePath = FileUtils.getPath(getActivity(), selectedImageUri);
Log.d(TAG, "mCurrentImagePath: " + mCurrentImagePath);

// Update client's picture
if (mCurrentImagePath != null && !mCurrentImagePath.isEmpty()) {
    fragmentEditPicture.setImageDrawable(new BitmapDrawable(getResources(),
            FileUtils.getResizedBitmap(mCurrentImagePath, 512, 512)));
}

图片路径为mCurrentImagePath: /storage/emulated/0/Download/56836_(5-27-2006 2-28-40)(1920x1200).JPG.

你知道为什么这不起作用吗?

您使用的方法有问题FileUtils.getResizedBitmap()。我创建了一个示例项目来重现您的问题。它在该示例项目中运行良好。使用下面的代码片段时,从设备内存加载图像应该没有问题。

public static Bitmap getResizedBitmap(String imagePath, int width, int height) {
    Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
    Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
    // Recycling the bitmap, because it's already used and not needed anymore
    bitmap.recycle();
    return resizedBitmap;
}