使用ImageView大小的比率与ConstrainLayout的响应性

时间:2018-03-27 23:23:18

标签: android android-studio responsive-design responsive android-constraintlayout

我正在使用ConstraintLayout让我的应用响应不同的屏幕大小。

我想用比率来调整我的小部件的大小。 因此,要使用比率,我必须将我的宽度和高度设置为match_constraints。

所以我正在做的是:

    <ImageView
    android:id="@+id/my_img"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="150dp"
    android:layout_marginStart="250dp"
    android:layout_marginTop="5dp"
    android:adjustViewBounds="true"
    android:src="@drawable/img_test"
    app:layout_constraintBottom_toTopOf="@+id/bot_img"
    app:layout_constraintDimensionRatio="h,125:50"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/top_img" />

因此,我将使用dp中的边距和比率来设置我的img大小。 问题是,当我使用不同的屏幕尺寸时,我的img将无法保持我想要的确切比例。

你能帮帮我吗?我使用ConstraintLayout吗?非常感谢

1 个答案:

答案 0 :(得分:1)

我认为你误解了constraintDimensionRatio的使用。使用width="0dp"设置两个水平约束,并设置constraintDimensionRatio(如1:1)。并且只设置一个垂直约束(如顶部)和height="0dp",并保留另一个(反之亦然,具体取决于您的要求)。现在,您的视图宽度将尽可能多地扩展,高度将根据比例进行调整。请参阅以下示例以便更好地理解。

<ImageView
    android:id="@+id/my_img"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:scaleType="centerCrop"
    android:src="@drawable/img_test"
    app:layout_constraintDimensionRatio="1:1"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"/>

上面的代码将生成一个方形图像,它将根据不同的父宽度进行缩放。

快乐编码:)