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