ImageView.setImageURI()でviewに反映されない時
setImageURIを使っている時の小メモ。 GitHub - ArthurHub/Android-Image-Cropper: Image Cropping Library for Android, optimized for Camera / Gallery. このlibraryを使っていてカメラで撮影された画像が同じfile名で上書き保存などされる時に対応。
ImageView | Android Developers
ソースコードを見ればわかるのだが、URIが同じ時は改めてセットされない。
@android.view.RemotableViewMethod(asyncImpl="setImageURIAsync") public void setImageURI(@Nullable Uri uri) { if (mResource != 0 || (mUri != uri && (uri == null || mUri == null || !uri.equals(mUri)))) { updateDrawable(null); mResource = 0; mUri = uri; final int oldWidth = mDrawableWidth; final int oldHeight = mDrawableHeight; resolveUri(); if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) { requestLayout(); } invalidate(); } }
URIは同じだが中身が変わる時は
imageView.setImageURI(null) imageView.setImageURI(uri)
一度nullするなどして mUri!=uri
に引っかからないようにしないとviewに反映されない。