我正在使用ConstraintLayout,并希望将元素的左侧居中到位于其上方的元素的中间。
[I'm Element 1]
| // middle of element 1
[Element 2 should start at middle of element 1]
如果没有编写代码,这是否可行?若是,怎么做?
答案 0 :(得分:1)
您可以使用约束对齐元素2。要使元素居中,您可以将左侧约束到元素1的左侧,并对右侧执行相同的操作。所以在xml中它会是这样的:
<Element2
android:id="@+id/element2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@+id/element1"
app:layout_constraintRight_toRightOf="@+id/element1" />
那应该水平居中。如果您还想垂直居中,只需添加顶部和底部约束。
编辑:误解了这个问题,如果你想将一个元素的左侧与另一个元素的中心对齐,你可以使用GuideLine
创建指南并将其基线定位到Element1的基线:
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBaseline_toBaselineOf="@+id/element1"/>
然后将element2的左侧与GuideLine
对齐<Element2
android:id="@+id/element2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@+id/guideline" />
答案 1 :(得分:0)
解决方案如下:使用1px * 1px View
作为指导,而不是指南,使用element1
&amp;将其放置在layout_constraintLeft_toLeftOf
的中心位置。 layout_constraintRight_toRightOf
个属性,然后将element2
与此View
指南对齐:
<android.support.constraint.ConstraintLayout>
...
<TextView
android:id="@+id/element1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<View
android:id="@+id/guideline"
android:layout_width="1px"
android:layout_height="1px"
android:background="#00000000"
app:layout_constraintLeft_toLeftOf="@id/element1"
app:layout_constraintRight_toRightOf="@id/element1" />
<TextView
android:id="@+id/element2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@id/guideline"
app:layout_constraintTop_toBottomOf="@id/element1" />
...
</android.support.constraint.ConstraintLayout>