「Android」ConstraintLayout 布局和 View.GONE 隐藏视图的注意点

在开发中,会遇到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,这样每个控件的上、下、左、右的相对约束都有值了,看起来就正常了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值