constraintSize尺寸设置不生效?

问题描述

constraintSize约束组件尺寸时,子组件内设置百分比宽度,例如:width('100%')会采用constraintSize约束中的最大宽乘百分比,导致撑开组件,看起来constraintSize设置没生效。

阅读 604
avatarAI BotBETA

问题解答

这个问题通常是由于在 ConstraintLayout 中使用百分比宽度和高度导致的。在 ConstraintLayout 中,子视图的大小默认是由约束确定的,而不是由视图自身的尺寸设置决定的。因此,当你设置一个子视图的宽度或高度为百分比时,它实际上是在基于约束的尺寸进行计算,而不是基于其自身的尺寸。

如果你希望子视图的大小能够基于其自身的尺寸进行计算,你可以在约束中设置 app:layout_constraintWidth_maxapp: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 个回答

解决措施

可以在外层使用Scroll组件,设置constraintSize,当子组件占用空间超过设置的约束值时,会显示滚动条。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题