Измените высоту ImageView, чтобы соответствовать пропорциям исходного изображения, используя Glide - PullRequest
0 голосов
/ 16 мая 2019

У меня есть ImageView in GridLayout, который показывает изображение, загруженное с URL.GridLayout имеет 2 столбца, и все это растянуто на весь экран.Мне нужно, чтобы все изображение было видно без каких-либо изменений соотношения сторон.Поскольку ширина экрана может варьироваться на многих устройствах, мне нужно рассчитать высоту на основе ширины ImageView (которая должна заполнять GridLayout) и соотношения сторон загружаемого изображения.

Моя идеядолжен был установить width из ImageView в match_parent и height в wrap_content, а затем сказать Glide , что я хочу вычислить высоту доподходит соотношение сторон изображения, но я изо всех сил пытаюсь это сделать.

Пока у меня есть это в макете:

<ImageView
    android:id="@+id/list_item_image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="fitCenter" />

И это в адаптере:

Glide.with(viewHolder.imageView.getContext())
                    .load(item.getImageUrl())
                    .apply(new RequestOptions().error(R.color.black_one))
                    .into(viewHolder.imageView);

1 Ответ

0 голосов
/ 16 мая 2019

Я нашел решение в этой статье .Использование ConstraintLayout позволяет использовать параметр app:layout_constraintDimensionRatio.Вам нужно установить одно из измерений на 0dp, а затем вы просто выбираете любое соотношение, которое хотите, и вот оно.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:src="@drawable/top_image"
        app:layout_constraintDimensionRatio="16:9"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

</android.support.constraint.ConstraintLayout>
...