显示包含SVG的全角ImageView会使图像变形

时间:2019-04-07 17:20:25

标签: android android-imageview android-constraintlayout androidsvg

我的目标是在ConstraintLayout中显示填充整个屏幕宽度的SVG背景图像。 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 个答案:

答案 0 :(得分:1)

对于ImageView,请尝试设置android:scaleType="centerCrop"。参见ImageView.ScaleType

  

CENTER_CROP

  统一缩放图像(保持图像的纵横比),以使图像的两个尺寸(宽度和高度)都等于或大于视图的相应尺寸(减去填充)。然后,图像在视图中居中。从XML使用以下语法:android:scaleType =“ centerCrop”。