setImageUri将ImageView空白

时间:2018-10-25 13:23:35

标签: android imageview uri

我在应用程序中使用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

的URI

1 个答案:

答案 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只是将位图缩放到所需的尺寸。