Отображение полноэкранного ImageView, содержащего SVG, искажает его - PullRequest
0 голосов
/ 07 апреля 2019

Моя цель - показать фоновое изображение SVG, занимающее всю ширину экрана, в ConstraintLayout. Button накладывается на это фоновое изображение, поэтому вы можете увидеть его на макете ниже:

enter image description here

Фоновое изображение содержит звезды. Его начальная и конечная стороны будут ограничены корнем GroupView, чтобы он полностью занимал всю ширину экрана.

Проблема заключается в следующем: привязываю ли я нижнюю сторону к нижней стороне экрана, фоновое изображение выглядит искаженным, как показано на следующем рисунке:

enter image description here

Вот код, который я написал:

<ImageView
    android:id="@+id/imageView16"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="@drawable/ic_background_stars"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@id/linearLayout4"  // "linearLayout4" is just a widget shown above, it's not an important element for this StackOverflow question
    />

<Button
    android:id="@+id/button_home_share"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="24dp"
    android:background="@color/colorRoyalRedLight"
    android:text="TextView"
    android:textAllCaps="false"
    android:textColor="@color/white"
    app:layout_constraintStart_toStartOf="@+id/imageView16"
    app:layout_constraintEnd_toEndOf="@+id/imageView16"
    app:layout_constraintTop_toTopOf="@+id/imageView16"
    app:layout_constraintBottom_toBottomOf="@+id/imageView16"
    />

Мой вопрос

Как я могу использовать свое SVG-изображение в качестве фонового изображения, которое будет отображаться без искажений, заполняя всю ширину экрана? Высота может, конечно, адаптироваться (чтобы сохранить хорошие пропорции), но не должна быть короче (в Y и в X), чем кнопка.

1 Ответ

2 голосов
/ 08 апреля 2019

Для ImageView попробуйте установить android:scaleType="centerCrop".См. ImageView.ScaleType .

CENTER_CROP

Равномерное масштабирование изображения (с сохранением соотношения сторон изображения), чтобы оба размера (ширинаи высота) изображения будет равна или больше соответствующего размера вида (минус отступ).Затем изображение центрируется на виде.Из XML используйте этот синтаксис: android: scaleType = "centerCrop".

...