如何在Constraintlayout

时间:2019-01-11 08:54:23

标签: java android android-constraintlayout

我喜欢在ConstraintLayout中的ImageView的特定位置处添加通过线连接到绿点的Button。 但是,当在不同屏幕上旋转图像比例或旋转时,绿点特定位置无法固定。请参考照片。

当前,我尝试添加一些绿点(具有可绘制背景的视图)。并通过constraintHorizo​​ntal_bias和constraintVertical_bias控制它们的位置。但这行不通。

app:layout_constraintHorizontal_bias="0.59"
app:layout_constraintVertical_bias="0.788"

代码如下:

   <android.support.constraint.ConstraintLayout
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toTopOf="@+id/button_oobe_1p7_ok"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView_oobe_1p7_title2"
    app:layout_constraintVertical_bias="0.0">

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@mipmap/icon_body_w" />

    <View
        android:id="@+id/view"
        android:layout_width="3dp"
        android:layout_height="3dp"
        android:background="@drawable/icon_bodypart_dot_selected"
        app:layout_constraintBottom_toBottomOf="@+id/imageView4"
        app:layout_constraintEnd_toEndOf="@+id/imageView4"
        app:layout_constraintHorizontal_bias="0.561"
        app:layout_constraintStart_toStartOf="@+id/imageView4"
        app:layout_constraintTop_toTopOf="@+id/imageView4"
        app:layout_constraintVertical_bias="0.501" />

    <View
        android:id="@+id/view2"
        android:layout_width="3dp"
        android:layout_height="3dp"
        android:background="@drawable/icon_bodypart_dot_selected"
        app:layout_constraintBottom_toBottomOf="@+id/imageView4"
        app:layout_constraintEnd_toEndOf="@+id/imageView4"
        app:layout_constraintStart_toStartOf="@+id/imageView4"
        app:layout_constraintTop_toTopOf="@+id/imageView4"
        app:layout_constraintVertical_bias="0.095" />


    <View
        android:id="@+id/view3"
        android:layout_width="3dp"
        android:layout_height="3dp"
        android:background="@drawable/icon_bodypart_dot_selected"
        app:layout_constraintBottom_toBottomOf="@+id/imageView4"
        app:layout_constraintEnd_toEndOf="@+id/imageView4"
        app:layout_constraintHorizontal_bias="0.59"
        app:layout_constraintStart_toStartOf="@+id/imageView4"
        app:layout_constraintTop_toTopOf="@+id/imageView4"
        app:layout_constraintVertical_bias="0.788" />

</android.support.constraint.ConstraintLayout>

2 个答案:

答案 0 :(得分:0)

在屏幕中央使用准则-s(在给定情况下为水平)。这样一来,您就可以在该位置附加小部件

答案 1 :(得分:0)

感谢所有分享评论。

我发现我只需要添加constraintDimensionRatio,然后ImageView将按比例缩放,因此app:layout_constraintHorizo​​ntal_bias和app:layout_constraintVertical_bias可以正常工作!

app:layout_constraintDimensionRatio="1:2.215"

完整代码

<ImageView
        android:id="@+id/imageView_body"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintDimensionRatio="1:2.215"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@mipmap/icon_body_w" />