setImageUri 将 ImageView 留空
setImageUri leaves the ImageView blank
我在我的应用程序中使用 BSImagePicker 库来让用户选择或拍摄图像。该库有以下方法(也是我的代码):
@Override
public void onSingleImageSelected(Uri uri) {
selectedImagePath = uri;
imageSelected = true;
imageViewContainer.setVisibility(View.VISIBLE);
imageView.setImageURI(uri);
imageView.invalidate();
}
我的问题是在用户选择(或拍摄)图像后 ImageView 仍然是空的。 URI 是正确的,因为我也用它来将图像上传到云端并且在那里工作正常。回调正常工作,因为 imageViewContainer 出现在正确的时间。
我还尝试了 setImageBitmap 与 BitmapFactory 和 setImageDrawable,但 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>
编辑:传递给函数的 URI:file:///storage/emulated/0/DCIM/Camera/IMG_20180829_211617.jpg
所以我仍然不知道问题到底是什么,但我是这样工作的:
@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 只是将位图缩放到所需的尺寸。
我在我的应用程序中使用 BSImagePicker 库来让用户选择或拍摄图像。该库有以下方法(也是我的代码):
@Override
public void onSingleImageSelected(Uri uri) {
selectedImagePath = uri;
imageSelected = true;
imageViewContainer.setVisibility(View.VISIBLE);
imageView.setImageURI(uri);
imageView.invalidate();
}
我的问题是在用户选择(或拍摄)图像后 ImageView 仍然是空的。 URI 是正确的,因为我也用它来将图像上传到云端并且在那里工作正常。回调正常工作,因为 imageViewContainer 出现在正确的时间。
我还尝试了 setImageBitmap 与 BitmapFactory 和 setImageDrawable,但 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>
编辑:传递给函数的 URI:file:///storage/emulated/0/DCIM/Camera/IMG_20180829_211617.jpg
所以我仍然不知道问题到底是什么,但我是这样工作的:
@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 只是将位图缩放到所需的尺寸。