GuideLine 相对于另一个对象

GuideLine relative to another object

您需要使 GuideLine 相对于另一个对象,而不是相对于屏幕。当我使用这个时:

app:layout_constraintGuide_percent="0.875"

layout_constraintGuide_percent 始终是父 ConstraintLayout 的 高度或宽度的百分比。您可以继续使用 GuideLine,但您必须以编程方式操作百分比 directly or through a facility like Data Binding.

您可以使用另一个小部件将小部件的位置设置为小部件宽度(或高度)的 87.5%。以下是如何做到这一点:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:id="@+id/viewWeNeedPercentageOf"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="@android:color/holo_blue_light"
        android:src="@drawable/ic_launcher_foreground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Space
        android:id="@+id/space85_7"
        android:layout_width="1px"
        android:layout_height="5dp"
        android:background="@android:color/holo_orange_light"
        android:visibility="gone"
        app:layout_constraintEnd_toEndOf="@id/viewWeNeedPercentageOf"
        app:layout_constraintHorizontal_bias="0.857"
        app:layout_constraintStart_toStartOf="@id/viewWeNeedPercentageOf"
        app:layout_constraintTop_toTopOf="@id/viewWeNeedPercentageOf" />

    <View
        android:id="@+id/viewToBePositioned"
        android:layout_width="10dp"
        android:layout_height="0dp"
        android:background="@android:color/holo_red_light"
        app:layout_constraintBottom_toBottomOf="@id/viewWeNeedPercentageOf"
        app:layout_constraintStart_toEndOf="@id/space85_7"
        app:layout_constraintTop_toTopOf="@id/viewWeNeedPercentageOf" />


</androidx.constraintlayout.widget.ConstraintLayout>

viewWeNeedPercentageOf 正是我们需要在其宽度的 85.7% 处定位 viewToBePositioned 的视图。

space85_7 是一个 Space 小部件,我们将放置在 viewWeNeedPercentageOf 宽度的 85.7% 处。为此,我们将其开始和结束约束设置为 viewWeNeedPercentageOf 的开始和结束,并将其水平偏差更改为 0.875。可见性设置为 gone,因此它的宽度和高度为零。

我们现在可以将 viewToBePositioned 的起始端限制到 space 小部件,因此它现在将占据 viewWeNeedPercentageOf[=24= 宽度的 85.7% 的位置]