ConstraintLayout-控件设置为gone跟设置为invisible一样的效果?

159 阅读1分钟

水平排列的一行控件,互相通过 layout_constraintLeft_toRightOflayout_constraintRight_toLeftOf 来约束。在代码中将中间的某个控件设置为 gone 后跟设置为 invisible 是一样的效果。在 XML中设置为gone是正常的效果。

  • 原因:

在代码里动态设置 View.GONE 时,布局不会立即重新计算和更新,需要手动触发布局更新。而在 XML 里设置 android:visibility="gone",布局在加载时就已经正确计算好了。

  • 解决方案

用父容器调用 requestLayout() 方法强制重新布局,确保布局系统重新计算所有控件的位置和大小。