Android ConstraintLayout-两种布局的顶部约束

Android ConstraintLayout-两种布局的顶部约束,android,android-layout,constraints,android-constraintlayout,Android,Android Layout,Constraints,Android Constraintlayout,我被ConstraintLayout困住了,不知道该使用哪个属性来执行我想要的操作 如下图所示,我想根据视图的高度为OrderTakenBy的TextView或OrderCollectedBy提供Details的顶部约束 情景: 如果我将细节视图的顶部约束指定为订单的底部,则如果获得更多行,它将与订单收集者的视图重叠(如下图所示)。反之亦然 注:接受的订单或收集的订单可能包含两行或三行 那么,对于既适用于动态高度又适用于动态高度的顶部约束,我可以做些什么呢 编辑: 任何人都可以提供帮助?

我被ConstraintLayout困住了,不知道该使用哪个属性来执行我想要的操作

如下图所示,我想根据视图的高度为
OrderTakenBy
TextView
OrderCollectedBy
提供
Details
的顶部约束

情景:

如果我将细节视图的顶部约束指定为订单的底部,则如果获得更多行,它将与订单收集者的视图重叠(如下图所示)。反之亦然

注:
接受的订单或收集的订单可能包含两行或三行

那么,对于既适用于动态高度又适用于动态高度的顶部约束,我可以做些什么呢

编辑:


任何人都可以提供帮助?

我认为您可以在另一个
约束布局中包装由
执行的
订单和由
收集的
订单,或者以编程方式检查高度(设置文本后)以编程方式更改顶部约束。

您可以使用屏障来解决此问题

屏障引用多个小部件作为输入,并基于指定侧最极端的小部件创建虚拟指南。例如,左侧屏障将与所有参照视图的左侧对齐

这是您的文档

接受的订单或
收集的订单添加为
app:constraint\u referenced\u ids=“view1,view2”
,并将详细视图设置为从顶部到底部

XML参考:

 <androidx.constraintlayout.widget.Barrier
    android:id="@+id/barrier"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="411dp"
    app:barrierDirection="bottom"
    app:constraint_referenced_ids="order_taken_by,order_collected_by"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    tools:layout_editor_absoluteY="21dp"/>


<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/detail"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="New"
    android:textSize="@dimen/_16sp"
    app:layout_constraintTop_toBottomOf="@+id/barrier"/>

使用底部屏障 使用Deatilstextview对屏障的顶部约束,以及对OrderTakenByOrderCollectedBytextview的屏障引用



conect of Detail view to last textview of OrderCollectedBy如果我将细节视图的顶部约束设置为OrderCollectedBy textview的底部,它将重叠(如下图所示)OrderTaken的视图如果有更多行,则使用文本视图。在ordercollected下面的电视上使用类似线性布局的容器,也可以使用滚动视图并将文本视图添加到其中。使用约束布局确定我说的是将ordercollected下面的电视包装成线性布局,或者设置约束progmaticallybarrier take top约束根据该视图的高度自动执行
 <androidx.constraintlayout.widget.Barrier
    android:id="@+id/barrier"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="411dp"
    app:barrierDirection="bottom"
    app:constraint_referenced_ids="order_taken_by,order_collected_by"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    tools:layout_editor_absoluteY="21dp"/>


<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/detail"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="New"
    android:textSize="@dimen/_16sp"
    app:layout_constraintTop_toBottomOf="@+id/barrier"/>
<?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.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="match_parent">

        <TextView
            android:id="@+id/OrderTakenBy"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:text="warehouse sdgjklsdj jgkjskg"
            app:layout_constraintEnd_toStartOf="@+id/OrderCollectedBy"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/OrderCollectedBy"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:text="hospital fhkhsf "
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/OrderTakenBy"
            app:layout_constraintTop_toTopOf="parent" />

        <androidx.constraintlayout.widget.Barrier
            android:id="@+id/barrier"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:barrierDirection="bottom"
            app:constraint_referenced_ids="OrderCollectedBy, OrderTakenBy" />

        <TextView
            android:id="@+id/Details"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="10dp"
            android:text="lorem_ipsum"
            android:gravity="center"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/barrier" />

    </androidx.constraintlayout.widget.ConstraintLayout>