ConstraintLayout 使用心得

本文围绕ConstraintLayout展开,它是升级版的RelativeLayout,能减少布局层次、提高性能。作者分享使用中需注意的点,如layout_marginTop在设置约束前不生效,match_parent在特定版本有效,Group可控制多view显隐但不能用于布局约束等,还提及背景使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写新项目,要求复杂的时候最好使用ConstraintLayout,于是正好把新的界面都采用ConstraintLayout来实现来练习下,了解下这个新控件(虽然已经出了2年多了

ConstraintLayout 中文一般称为约束布局,个人感受相当于一个升级版的RelativeLayout,之前用RelativeLayout相比LinearLayout等可以减少布局层次,不过对于更复杂的布局却也无能为力还是需要多层嵌套。而ConstraintLayout 中增加了更多确定相对位置的方法,可以大大减少布局层次,提高性能,大部分复杂布局都能改成1~2层的扁平结构。不过还是有很多不同需要学习后才能了解。关于基础的使用方法,网上类似的文章复制来复制去都是那几篇,可以看看了解下基础用法。

解析ConstraintLayout的性能优势

这里只记录下一些需要注意的地方。
当前使用的

implementation 'com.android.support.constraint:constraint-layout:1.1.3'

1.layout_marginTop 等方法在设置 layout_constraintTop_toTopOf等约束之前,是不生效的。padding不受影响(前提是没被onstraintTop等方法约束死)

2.关于match_parent ,旧的文章中都提到这个没有了或无效了。在1.1.3中这个版本是有的,而且还是原来的效果,warp_parent 也是同样,想要填充剩余空间的话,还是和LinearLayout中一样设为0dp就可以了,不再需要weight属性了

3.Group 可以用来统一控制 多个view同时显示或隐藏,但是实测无法将其作为一个整体用来做布局约束,仅仅类似一个标记。

4.关于需要设置背景的时候,一般的方法是创建一个view单独设置背景,然后设置其边界约束。
对于原先ViewGroup设有padding的时候,可以有三个方法代替:

  1. 可以确定背景位置时,固定背景位置,然后view以背景位置作为约束条件,设置margin。
  2. 只能通过子view来确定背景大小时,将padding设置到子view上,然后背景view以子view来设置边界约束
  3. 保留viewGroup。。。
    ConstraintLayout中background的使用方法

5.在设置链或其他的时候,可能在前方会引用后方的view。一个View的ID在第一次被声明在layout中时需要使用+前缀在资源id前,类似于: @+id/background。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值