1 添加依赖
compile'com.android.support.constraint:constraint-layout:1.1.3'
2 相对定位
基本与rl类似
layout_constraintLeft_toLeftOf
layout_constraintLeft_toRightOf
layout_constraintRight_toLeftOf
layout_constraintRight_toRightOf
layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOf
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf
2 角度定位
app:layout_constraintCircleAngle="120"(中心到中心角度)(顺时针方向)
app:layout_constraintCircleRadius="150dp"(中心到中心距离)
3 边距
与rl一样 不过需要注意,要使margin生效,必须具有对应方向的layout_constraint*,否则margin不生效.
另外有个goneMargin
goneMargin主要用于约束的控件可见性被设置为gone的时候使用的margin值
4 居中偏移
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
layout_constraintHorizontal_bias 水平偏移
layout_constraintVertical_bias 垂直偏移
5 尺寸约束
权重app:layout_constraintHorizontal_weight="1"
android:minWidth 最小的宽度
android:minHeight 最小的高度
android:maxWidth 最大的宽度
android:maxHeight 最大的高度
注意!当ConstraintLayout为1.1版本以下时,使用这些属性需要加上强制约束,如下所示:
app:constrainedWidth=”true”
app:constrainedHeight=”true”
使用 0dp (MATCH_CONSTRAINT)
官方不推荐在ConstraintLayout中使用match_parent,可以设置 0dp (MATCH_CONSTRAINT) 配合约束代替match_parent,举个例子:
5 宽高比
app:layout_constraintDimensionRatio="1:1"
6 链(控件之间要相互关联)
layout_constraintHorizontal_chainStyle
layout_constraintHorizontal_weight 权重链
CHAIN_SPREAD —— 展开元素 (默认);
spread_inside —— 展开元素,但链的两端贴近parent;
packed —— 链的元素将被打包在一起。
其他工具
Guideline辅助线
Guildline像辅助线一样,在预览的时候帮助你完成布局,且不显示在界面上。
Guildline的主要属性:
android:orientation 垂直vertical,水平horizontal
app:layout_constraintGuide_begin 开始位置
app:layout_constraintGuide_end 结束位置
app:layout_constraintGuide_percent 距离顶部的百分比(orientation = horizontal时则为距离左边)
Placeholder 占位
在Placeholder中可使用app:content="@+id/..."设置另一个控件的id,使这个控件移动到占位符的位置
Group
app:constraint_referenced_ids="..,.."用Group把控件归为一组
Optimizer 后期补充
Barrier 优化约束屏障