在开发中,会遇到item布局中动态显示数据,没有数据的就隐藏,如果用 ConstraintLayout 布局可能会有约束问题。
废话不多说,直接上图更直接:
介绍布局 (从上到下,从左至右)
「一定不隐藏TV」左、右、上约束
「可能会隐藏1 TV」左、右根据上面的TV布局,上约束10dp
「可能会隐藏2 TV」左、右根据上面的TV布局,上、下约束10dp
看起来没什么问题,但是实际在adapter中如果「可能会隐藏1 」没有数据希望隐藏,如果用 View.INVISIBLE
没什么问题,但是中间会空出一段高度,显的不好看,如果用 View.GONE
会发现整个item高度异常了,并且下面的「可能会隐藏2」不显示了。
发现问题
「可能会隐藏1」Gone了后,不占位置,自身的所有约束都没了,所以下方的 「可能会隐藏2」 的左右约束也会失效,导致TV没有必要约束而不显示。
解决问题
把「可能会隐藏2」的左右约束连接到「一定不会隐藏」的控件上即可
优化
现在布局问题解决了,但是发现如果有这种情况,布局看起来很挤,下面说解决方案:
设置控件的上、下约束时,比如需要10dp,那就设置成5dp,然后选到另一个控件设置相反的约束为5dp,这样每个控件的上、下、左、右的相对约束都有值了,看起来就正常了