我在应用程序中使用BSImagePicker库,以允许用户选择或拍摄图像。该库具有以下方法(也是我的代码):
@Override
public void onSingleImageSelected(Uri uri) {
selectedImagePath = uri;
imageSelected = true;
imageViewContainer.setVisibility(View.VISIBLE);
imageView.setImageURI(uri);
imageView.invalidate();
}
我的问题是用户选择(或拍摄)图像后ImageView仍然为空。 URI是正确的,因为我也使用它将图像上传到云,并且在那里可以正常工作。回调正常运行,因为imageViewContainer出现在正确的时间。
我还尝试了使用BitmapFactory和setImageDrawable的setImageBitmap,但是ImageView仍然为空。我在做什么错了?
我对应的xml:
<android.support.v7.widget.CardView
android:id="@+id/imageview_container"
android:layout_width="100dp"
android:layout_height="150dp"
android:layout_below="@id/image_container"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="15dp"
app:cardCornerRadius="5dp"
app:cardElevation="5dp">
<ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v7.widget.CardView>
编辑:传递给函数file:///storage/emulated/0/DCIM/Camera/IMG_20180829_211617.jpg
答案 0 :(得分:0)
所以我仍然不知道问题出在哪里,但是我做到了:
@Override
public void onSingleImageSelected(Uri uri) {
selectedImagePath = uri;
imageSelected = true;
imageViewContainer.setVisibility(View.VISIBLE);
try {
Bitmap image = scaleBitmap(MediaStore.Images.Media.getBitmap(getContentResolver(), uri));
imageView.setImageBitmap(image);
}
catch (IOException e) {
showAlertFlashBar("Image not found.");
}
}
,其中scaleBitmap只是将位图缩放到所需的尺寸。