setImageUri оставляет ImageView пустым - PullRequest
0 голосов
/ 25 октября 2018

Я использую библиотеку 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

1 Ответ

0 голосов
/ 25 октября 2018

Так что я до сих пор не знаю, в чем на самом деле была проблема, но я заставил ее работать так:

@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 просто масштабировал растровое изображение до нужных размеров.

...