Как установить минимальное / максимальное соотношение сторон для представления Android?

Я хочу создать представление, которое будет расти в соответствии с его родителем, а затем увеличится по высоте, чтобы обернуть загруженное изображение до максимального соотношения сторон.

В настоящее время у меня есть вид, который выглядит примерно так:

<android.support.percent.PercentRelativeLayout
  android:id="@+id/ImageViewLayout"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
  <ImageView
    android:id="@+id/ImageView"
    app:layout_widthPercent="100%"
    app:layout_aspectRatio="300%"
    android:scaleType="fitCenter"/>
</android.support.percent.PercentRelativeLayout>

Разница здесь в том, что соотношение сторон установлено. В текущем коде, если я получаю изображение, которое не соответствует соотношению сторон 3:1, оно сжимается и помещается внутри вида. Я хотел бы, чтобы, если изображение слишком высокое, поведение оставалось прежним, но если изображение слишком широкое, ImageViewLayout оборачивает изображение, чтобы устранить мертвое пространство над / под изображением.

Я не нашел способ сделать то, что я хочу, используя ConstraintLayout или PercentRelativeLayout. Лучшее, что я придумал, - это программная проверка соотношения сторон и изменение ограничений на основе изображения.

0 ответов