如何将一个视图限制在另一个视图底部的中心?

时间:2019-05-20 00:04:21

标签: android android-layout android-constraintlayout

我想让一幅图像始终完美地居于另一幅图像底部的顶部。

我首先想到的是将背景图像的底部约束从另一个视图设置为例如100dp,然后将前景图像的底部约束从同一视图设置为50dp,并将其高度设置为100dp。 这样,它将始终位于背景图像底部中心的中心,但是我通过给前景视图提供固定大小来使其不响应,这是我想避免的事情。

我想到的另一个想法是将前景图像的顶部和底部都限制在背景图像的底部,但是随后视图就崩溃了。 我找不到任何可使它正常工作的设置。

*我需要保持前景图像的比例。

3 个答案:

答案 0 :(得分:0)

您可以通过将视图限制在目标的起点和终点来做到这一点,以使其始终居中。这是一个示例:

<View
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/targetView"
    app:layout_constraintStart_toStartOf="@+id/targetView"
    app:layout_constraintEnd_toEndOf="@+id/targetView" />

答案 1 :(得分:0)

我在这里找到了答案:

https://gist.github.com/writtmeyer/f5971266394b2316eb01b566cdeff2a0

如果使用虚拟视图,则建议使用聪明的方法。

答案 2 :(得分:0)

我认为这就是您想要的。

<ImageView
    android:id="@+id/backgroundImage"
    android:layout_width="150dp"
    android:layout_height="150dp"
    app:srcCompat="@mipmap/ic_launcher" />

<ImageView
    android:id="@+id/foregroundImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="@id/backgroundImage"
    app:layout_constraintEnd_toEndOf="@id/backgroundImage"
    app:layout_constraintStart_toStartOf="@id/backgroundImage"
    app:layout_constraintTop_toTopOf="@id/backgroundImage"
    app:srcCompat="@mipmap/ic_launcher"/>