【Android】约束布局(ConstraintLayout)使用参考

目录

  1. 尺寸约束
    1. 自身约束
    2. 参照约束
  2. 位置约束
    1. 相对位置
    2. 位置偏向
    3. 辅助线
  3. 链约束(Chain)
  4. 总结

尺寸约束

自身约束

尺寸类型
类型说明
固定值android:width="200dp"
wrap_content按内容自适应
MATCH_CONSTRAINT宽高0dp,任由约束拉伸
宽高比

在宽或高为MATCH_CONSTRAINT的情况下,保持宽高比:app:layout_constraintDimensionRatio

值类型说明
w:h宽高只有一个为MATCH_CONSTRAINT,按比例式约束另一个
x.xx宽高只有一个为MATCH_CONSTRAINT,按比例值约束另一个
W,1:1宽高均为0时先约束高度,再用比值约束宽度
H,1:1宽高均为0时先约束宽度,再用比值约束高度

参照约束

百分比
  1. 相关尺寸约束(水平为宽,垂直为高)设置为MATCH_CONSTRAINT
  2. 启用按父布局百分比约束
    app:layout_constraintWidth_default="percent"
    app:layout_constraintHeight_default="percent"
  3. 设置百分比值([0~1])
    app:layout_constraintWidth_percent="0.5"
    app:layout_constraintHeight_percent="1"
权重链
  1. View彼此约束位置连接成链
  2. 相关尺寸(水平为宽,垂直为高)设置为MATCH_CONSTRAINT
  3. 设置权重
    app:layout_constraintHorizontal_weight=“1.2”
    app:layout_constraintVertical_weight=“2.4”


位置约束

相对位置

设置方向力:app:layout_constraint{自身方向}_to{参照物方向}Of="{参照物}"
其中参照物:parent其他ViewGuideLine

位置偏向

默认居中(0.5),相当于设置lefttop在父容器的初始位置
layout_constraintHorizontal_bias="0.2"
layout_constraintVertical_bias="0.8"


辅助线

GuideLine:只辅助约束,不参与渲染

<android.support.constraint.Guideline
    android:id="@+id/guideline_h"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5"/>
辅助线说明
辅助线类型水平horizontal,垂直vertical
固定位置app:layout_constraintGuide_begin=“10dp”
app:layout_constraintGuide_end=“50dp”
百分比位置app:layout_constraintGuide_percent=”0.5”


链约束

定义链:View两两相依连接成链
声明类型: 链头控制整条链的类型

  1. app:layout_constraintHorizontal_chainStyle="spread_inside"
  2. app:layout_constraintVertical_chainStyle="packed"
链类型实现方式样式
散布式(Spread默认)相关尺寸不为0空白均匀散布在View周边
内散式(Spread Inside)相关尺寸不为0空白均匀散布在View之间
外散式(Packed)相关尺寸不为0空白均匀散布在View两端
外散偏向相关尺寸不为0
链头View设置偏向
空白不均匀散在View两端
权重链链中View设置权重不散布空白


总结

  1. View尺寸可以是固定值,也可以由自身约束(wrap_content,宽高比),也可以根据父容器约束(百分比,权重)
  2. 约束可以理解为一种方向上的拉扯力,这种拉扯力可以拉扯位置,也可以在View的尺寸为MATCH_CONSTRAINT拉伸View的大小
  3. 拉扯力有四个方向,着力点可以是View的边也可以是辅助线,两端都固定在着力点上;
  4. 拉扯力道默认相当,可以通过偏向控制其拉扯位置时候的力的力道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值