当孩子的高度是 wrap_content 时,约束布局正在占用全宽
Posted
技术标签:
【中文标题】当孩子的高度是 wrap_content 时,约束布局正在占用全宽【英文标题】:Constraint Layout is taking full width when a child is wrap_content in height 【发布时间】:2021-08-01 07:18:30 【问题描述】:我希望测试视图只占用卡片其余部分所占据的高度。 (见代码sn-p末尾的图片)但它正在将视图的高度推到整个屏幕。
只有在提供 0 高度后才能正常工作,这似乎不正确。 除了提供 0 高度 来实现这种行为,还能做什么?
<RelativeLayout 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_
android:gravity="center"
android:layout_
tools:context=".MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_
android:background="@color/colorPrimary">
<TextView
android:id="@+id/dialog_title"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="60dp"
android:layout_marginEnd="8dp"
android:background="@android:color/holo_red_light"
android:text="Dialog title"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
<View
android:id="@+id/test"
app:layout_constraintTop_toTopOf="parent"
android:background="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_
android:layout_/>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>```
what I want [1]: https://i.stack.imgur.com/8NU4d.png
what shows up [2]: https://i.stack.imgur.com/K6qEn.png
【问题讨论】:
分享您想要设计的布局。 @MehulKabaria 我想要什么 [1]:i.stack.imgur.com/8NU4d.png 出现了什么 [2]:i.stack.imgur.com/K6qEn.png 我已经发布答案检查它 @MehulKabaria,感谢您的回答,r 可以在没有 0 dp 的情况下做到这一点,?在我的问题中也提到过同样的事情 我能知道没有 0dp 的原因是什么吗?? 【参考方案1】:试试这个,您需要更改View
的底部约束并将View
的高度设为0dp。
<RelativeLayout 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_
android:gravity="center"
android:layout_>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_
android:background="@color/echo">
<TextView
android:id="@+id/dialog_title"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="60dp"
android:layout_marginEnd="8dp"
android:background="@android:color/holo_red_light"
android:text="Dialog title"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
<View
android:id="@+id/test"
app:layout_constraintTop_toTopOf="parent"
android:background="@color/black"
app:layout_constraintBottom_toBottomOf="@+id/dialog_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_
android:layout_/>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
输出:
【讨论】:
以上是关于当孩子的高度是 wrap_content 时,约束布局正在占用全宽的主要内容,如果未能解决你的问题,请参考以下文章
ScrollView 及其内容使用“wrap_content”。如何分配约束优先级?