水平排列的一行控件,互相通过 layout_constraintLeft_toRightOf 和 layout_constraintRight_toLeftOf 来约束。在代码中将中间的某个控件设置为 gone 后跟设置为 invisible 是一样的效果。在 XML中设置为gone是正常的效果。
- 原因:
在代码里动态设置 View.GONE 时,布局不会立即重新计算和更新,需要手动触发布局更新。而在 XML 里设置 android:visibility="gone",布局在加载时就已经正确计算好了。
- 解决方案
用父容器调用 requestLayout() 方法强制重新布局,确保布局系统重新计算所有控件的位置和大小。