如何在ConstraintLayout中将一个视图的边缘设置为另一个视图的中心?

时间:2018-07-17 06:24:39

标签: android alignment

我知道之前曾有人问过这个问题,但无法弄清楚为什么此代码无法正常工作。我正在尝试将view1的底部边缘对准view2的中心:

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <View
        android:id="@+id/view1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/view2"
        app:layout_constraintBottom_toBottomOf="@id/view2"
        android:background="@color/colorPrimary" />

    <View
        android:id="@+id/view2"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginTop="200dp"
        android:background="@color/colorSecondary" />

</android.support.constraint.ConstraintLayout>

从我能找到的所有内容来看,这看起来应该可行。 view1底部的两个约束应相互平衡,并将其与view2的中心对齐。相反,“ constraintBottom_toTopOf”似乎会覆盖其他约束,而“ constraintBottom_toBottomOf”会被忽略(如果我删除第一个约束,则第二个约束会正常工作)。我在这里想念什么?

类似this之类的帖子提出了相反的问题:如何将一个视图居中放置在另一个视图的边缘。答案...

<ImageView
    android:id="@+id/imageView_companyLogo_jobDetails"
    android:layout_width="75dp"
    android:layout_height="75dp"
    android:fitsSystemWindows="true"
    app:layout_collapseMode="parallax"            
    app:layout_constraintBottom_toTopOf="@+id/cardView_jobHeader_jobDetails"            
    app:layout_constraintEnd_toEndOf="@id/cardView_jobHeader_jobDetails"            
    app:layout_constraintStart_toStartOf="@id/cardView_jobHeader_jobDetails"            
    app:layout_constraintTop_toTopOf="@+id/cardView_jobHeader_jobDetails" />

...对我来说很有意义,Bottom_toTopOf和Top_toTopOf约束取消并迫使视图居于视图顶部上方。我在其他地方尝试过类似的东西,这是一个很好的问题。尝试以另一种方式尝试执行此操作时,无法弄清楚为什么它不起作用。

谢谢。

0 个答案:

没有答案