是否可以在 Android ConstraintLayout 中控制链的两侧的偏差?
Is it possible to control the bias of both sides of a chain in Androids ConstraintLayout?
我通过链创建了两行ImageButtons,并使用packed样式来关闭两行之间的间隙。但是,在顶部和底部的整个 ImageButtons 行周围有很多额外的 space。
当我尝试在顶行按钮上使用 layout_constraintVertical_bias="0.1" 并在底行按钮上使用 layout_constraintVertical_bias="0.9" 来消除间隙时,它只会将行向上移动布局的顶部。我知道链约束的详细信息应该在父视图中,但是无论如何也可以让链的子项也适应偏差吗?我知道这可以通过将宽度更改为 0dp 来完成,但是当我这样做时,由于按钮数量不均匀,底部的图像变得比顶部的图像更宽。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/button1"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button4"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/button2"
app:layout_constraintVertical_chainStyle="packed"/>
<ImageButton
android:id="@+id/button2"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button4"
app:layout_constraintLeft_toRightOf="@+id/button1"
app:layout_constraintRight_toLeftOf="@id/button3"
app:layout_constraintVertical_bias="1"/>
<ImageButton
android:id="@+id/button3"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button5"
app:layout_constraintLeft_toRightOf="@id/button2"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintVertical_chainStyle="packed"/>
<ImageButton
android:id="@+id/button4"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/button1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/button5"
app:layout_constraintBottom_toBottomOf="parent"/>
<ImageButton
android:id="@+id/button5"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/button3"
app:layout_constraintLeft_toRightOf="@id/button4"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
编辑:
这就是我在下面要实现的目标。我基本上希望箭头向上推到红线,而 ImageButtons 留在它们现在所在的位置,因此按钮与布局的顶部和底部边缘之间存在间隙。我试图使用垂直偏差缩小第二张图片中的间隙,但如您所见,它仅适用于顶行按钮,而不适用于底行按钮。
所以,问题真的是 "why is my ConstraintLayout so tall?" 如果你可以使用 ConstraintLayout
的更高版本(1.1.0-beta3 是最新的),这个问题就会消失。如果您不能使用测试版,有一个解决方法,但升级是最好的解决方案。如果您不能使用测试版,请回复。
我通过链创建了两行ImageButtons,并使用packed样式来关闭两行之间的间隙。但是,在顶部和底部的整个 ImageButtons 行周围有很多额外的 space。
当我尝试在顶行按钮上使用 layout_constraintVertical_bias="0.1" 并在底行按钮上使用 layout_constraintVertical_bias="0.9" 来消除间隙时,它只会将行向上移动布局的顶部。我知道链约束的详细信息应该在父视图中,但是无论如何也可以让链的子项也适应偏差吗?我知道这可以通过将宽度更改为 0dp 来完成,但是当我这样做时,由于按钮数量不均匀,底部的图像变得比顶部的图像更宽。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/button1"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button4"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/button2"
app:layout_constraintVertical_chainStyle="packed"/>
<ImageButton
android:id="@+id/button2"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button4"
app:layout_constraintLeft_toRightOf="@+id/button1"
app:layout_constraintRight_toLeftOf="@id/button3"
app:layout_constraintVertical_bias="1"/>
<ImageButton
android:id="@+id/button3"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button5"
app:layout_constraintLeft_toRightOf="@id/button2"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintVertical_chainStyle="packed"/>
<ImageButton
android:id="@+id/button4"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/button1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/button5"
app:layout_constraintBottom_toBottomOf="parent"/>
<ImageButton
android:id="@+id/button5"
android:layout_width="80dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/button3"
app:layout_constraintLeft_toRightOf="@id/button4"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
编辑:
这就是我在下面要实现的目标。我基本上希望箭头向上推到红线,而 ImageButtons 留在它们现在所在的位置,因此按钮与布局的顶部和底部边缘之间存在间隙。我试图使用垂直偏差缩小第二张图片中的间隙,但如您所见,它仅适用于顶行按钮,而不适用于底行按钮。
所以,问题真的是 "why is my ConstraintLayout so tall?" 如果你可以使用 ConstraintLayout
的更高版本(1.1.0-beta3 是最新的),这个问题就会消失。如果您不能使用测试版,有一个解决方法,但升级是最好的解决方案。如果您不能使用测试版,请回复。