Android约束布局问世已经有一段时间了,对于最初的一些开发者来说,早已习惯了相对布局或线性布局的使用,基本上可以满足日常开发的需求。但是这样一来,约束布局不就没有它存在的意义了吗。
从谷歌官方数据来看,约束布局在某些情况下表现要高于线性布局以及相对布局。其特点是层级单一,所有控件均处于同一层级。
学习时参考了这篇文章,写的不错。
带你了解Android约束布局ConstraintLayout
约束布局的强大
1、圆形定位
可以让一个控件以另一个控件的中心为中心点,来设置其相对与该中心点的距离和角度
2、障碍
当需要某一控件的位置是根据某几个控件宽度改变而改变时,可以设置某几个控件为一组,目标控件对这组控件设置障碍,从而达到效果。
3、Guidelines
在横纵两个方向上可以设置Guideline,其用于帮助控件约束时提供边界。如需要两个控件整体居中。则设置纵轴方向Guideline在50%地方,之后左右两边各一个控件既满足居中条件。
4、自动添加约束
自动添加约束的方式主要有两种,一种叫Autoconnect,一种叫Inference
Autoconnect是生效后,下一个添加的控件自动添加约束。
Inference是给当前页面内所有控件自动添加约束。
注意自动添加约束不会百分百的准确,仍然需要我们进行手动调整。
5、尺寸约束
约束布局中不推荐使用MATCH_PARENT这个值,如果想满足效果,设置宽或高为0dp。
6、宽高比
通过layout_constraintDimensionRatio设置一个比例即可,如2:1 。若希望宽度充满全屏,高度按比例,则需要在前面加上"H",之后再加上比例。宽和高同时要设置0dp。
7、百分百宽高
百分比宽高为设置自身一个0到1之间的值,以自身为基数乘以比例。
8、位置偏向
可以设置位置偏向某一方向百分比。如偏左30%,即控件整体位置偏左30%。
9、权重
与线性布局一样,约束布局也可以设置权重
10、链
约束布局提供了5种链式结构,权重链就是其中一种。使用不同的结构可以达到不同的效果。