我目前正在我们的项目中尝试 ConstraintLayout
。
我想实现的布局可以简化如下:
在布局的顶部有两个 View (比如 TopA 和 TopB),在它们下面有另一个 View (比如 BottomC)。
TopB 的高度是可变的,在不同的情况下,TopB 的高度可能比 TopA 的高或低。
我的问题是:如何将BottomC限制在高度较大的Top View 的底部,使BottomC不会与高度较大的 View 重叠。 (下面附上截图)
我可以通过将 TopA 和 TopB 添加到额外的 ViewGroup
(例如 LinearLayout
)并将 BottomC 限制在该 ViewGroup
的底部来实现>。但是是否可以在不引入额外的 ViewGroup
层的情况下实现这一目标?
最佳答案
问题发布后3分钟,我才发现最近发布的1.1.x版本ConstrainLayout
有一个名为 Barrier
的新功能,以及ConstrainLayout
的官方培训文档已更新to introduce it .
这正是我要找的。希望这可以帮助像我这样的人。
实际布局代码如下所示(注意 android.support.constraint.Barrier
节点):
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/topA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/topB"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="24dp"
android:text="Text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.75"
app:layout_constraintStart_toEndOf="@+id/topA"
app:layout_constraintTop_toTopOf="@+id/topA"
/>
<android.support.constraint.Barrier
android:id="@+id/barrier4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="topA,topB"
tools:layout_editor_absoluteY="16dp"/>
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.50"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/barrier4"/>
</android.support.constraint.ConstraintLayout>
关于android - 约束布局 : How to constrain a View's top to the bottom of the view of largest height?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47120035/