问题描述
constraintSize约束组件尺寸时,子组件内设置百分比宽度,例如:width('100%')会采用constraintSize约束中的最大宽乘百分比,导致撑开组件,看起来constraintSize设置没生效。
问题描述
constraintSize约束组件尺寸时,子组件内设置百分比宽度,例如:width('100%')会采用constraintSize约束中的最大宽乘百分比,导致撑开组件,看起来constraintSize设置没生效。
问题解答
这个问题通常是由于在 ConstraintLayout 中使用百分比宽度和高度导致的。在 ConstraintLayout 中,子视图的大小默认是由约束确定的,而不是由视图自身的尺寸设置决定的。因此,当你设置一个子视图的宽度或高度为百分比时,它实际上是在基于约束的尺寸进行计算,而不是基于其自身的尺寸。
如果你希望子视图的大小能够基于其自身的尺寸进行计算,你可以在约束中设置 app:layout_constraintWidth_max
或 app:layout_constraintHeight_max
属性,并将其值设置为 wrap_content
。这样,子视图的大小就不会受到父视图的约束尺寸的影响,而是会基于其自身的尺寸进行计算。
例如,如果你有一个 ImageView,你可以这样设置其约束:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintWidth_max="wrap_content"
app:layout_constraintHeight_max="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
这样设置后,ImageView 的宽度和高度就会基于其自身的尺寸进行计算,而不是基于父视图的约束尺寸。
1 回答592 阅读✓ 已解决
1 回答589 阅读
1 回答533 阅读
1 回答434 阅读
527 阅读
459 阅读
解决措施
可以在外层使用Scroll组件,设置constraintSize,当子组件占用空间超过设置的约束值时,会显示滚动条。