垂直偏差在约束布局中不起作用 Android

Vertical bias not working in Constraint Layout Android

嘿,我想在我的图像视图上添加垂直偏差。但它不起作用。我要一起看全貌。但是当我设置约束时,它会拉伸视图并将其分成相等的部分。

我不想要这个

我想像这样设置适当的约束

这是我的 xml 代码

<androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/contentContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:focusable="true"
            android:focusableInTouchMode="true">

            <ImageView
                android:id="@+id/topImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="24dp"
                android:src="@drawable/xyz"
                android:visibility="visible"
                app:layout_constraintBottom_toTopOf="@+id/header"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:ignore="ContentDescription" />

            <TextView
                android:id="@+id/header"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_constraintBottom_toTopOf="@+id/description"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/topImage"
                tools:text="Header" />

            <TextView
                android:id="@+id/description"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_constraintBottom_toTopOf="@+id/imageView"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/header"
                app:layout_constraintVertical_bias="0.0"
                tools:text="Description" />

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                app:layout_constraintVertical_bias="0.0"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/description"
                tools:ignore="ContentDescription" />

        </androidx.constraintlayout.widget.ConstraintLayout>

您有一个由四个视图组成的垂直链(顶部和底部按顺序相互约束)。当有链条时,它们在那个方向上被视为一个组,并且有一种“链条样式”决定它们如何间隔开。默认的链条样式是“展开”,但您想要“打包”。添加

app:layout_constraintVertical_chainStyle="packed"

到链中的第一个视图,topImage。它将影响整个链条。您还可以 right-click 设计编辑器中的链条并以此方式更改链条样式。

如果你想使用垂直偏移,你应该把它放在链的第一个视图 topImage 中,而不是 imageView。整个群体会一起偏向,但偏向是相对于第一个观点来解释的。或者,如果您只想让整个组一直偏向顶部,您可以移除底部视图和父视图底部之间的偏差和约束。