记录一下ConstraintLayout的一些简单用法
摘自https://www.jianshu.com/p/b884b8c46584
和https://cloud.tencent.com/developer/article/1150341
基础方法
- layout_constraintBaseline_toBaselineOf (View A 内部文字与 View B 内部文字对齐)
- layout_constraintLeft_toLeftOf (View A 与 View B 左对齐)
- layout_constraintLeft_toRightOf (View A 的左边置于 View B 的右边)
- layout_constraintRight_toLeftOf (View A 的右边置于 View B 的左边)
- layout_constraintRight_toRightOf
- layout_constraintTop_toTopOf
- layout_constraintTop_toBottomOf
- layout_constraintBottom_toTopOf
- layout_constraintBottom_toBottomOf
- layout_constraintStart_toEndOf
- layout_constraintStart_toStartOf
- layout_constraintEnd_toStartOf
- layout_constraintEnd_toEndOf
约束的强度
- layout_constraintHorizontal_bias
- layout_constraintVertical_bias
Visibility 属性
- Visibility 即使设置为gone也不会影响布局
宽高比
- app:layout_constraintDimensionRatio
- 要使用 layout_constraintDimensionRatio 属性,需要至少设置宽度或者高度为 0dp,
宽高的尺寸比例可以通过“float值”或者“宽度:高度”的形式来设置
设置控件之间的宽高占比
- app:layout_constraintHorizontal_weight="1.5"(类似于layout_weight)
锚向指示线
- Guideline (其实就是加了一个指示线 集成view 不可见)
Circular Positioning(圆形定位)
- app:layout_constraintCircle -目标 View 的 ID
- app:layout_constraintCircleAngle -对齐的角度
- app:layout_constraintCircleRadius -与目标 View 之间的距离(顺时针方向,0~360度)
Enforcing constraints(强制约束)
在 1.1 版本之前,如果将控件的尺寸设置为 wrap_content,那么对控件设置的 maxWidth、minHeight 这些约束是不起作用的,
而强制约束就用于使控件在设置 wrap_content 的情况下约束依然生效
- app:layout_constrainedHeight="true | false"
- app:layout_constrainedWidth="true | false"
Dimensions
当控件的尺寸设置为 0dp 时,可以用以下两个属性来指定当前控件的宽度或高度占父控件的百分比,属性值在 0 到 1 之间
- layout_constrainWidth_percent
- layout_constrainHeight_percent
Barrier(屏障)
很多时候我们都会遇到控件的大小随着其包含的数据的多少而改变的情况,
而此时如果有多个控件之间是相互约束的话,就比较难来设定各个控件间的约束关系了
而 Barrier(屏障)就是用于这种情况,Barrier 和 GuideLine 一样是一个虚拟的 View,
对界面是不可见的,只是用于辅助布局,
而 Barrier 和 GuideLine 的区别在于它可以由多个 View 来决定其属性
- barrierDirection:用于设置 Barrier 的位置,属性值有:bottom、top、start、end、left、right
- constraint_referenced_ids:用于设置 Barrier 所引用的控件的 ID,可同时设置多个
- barrierAllowsGoneWidgets:默认为 true,当 Barrier 所引用的控件为 Gone 时,则 Barrier 的创建行为是在已 Gone 的控件已解析的位置上进行创建。如果设置为 false,则不会将 Gone 的控件考虑在内
Group
Group 用于控制多个控件的可见性,如果要隐藏多个控件则不必再单独设置每个控件的可见性了,其使用到的属性有
- constraint_referenced_ids :用于设置所引用的控件的 ID
Placeholder
Placeholder (占位符)用于和一个视图关联起来,通过 setContentId() 方法将占位符转换为指定的视图,即视图将在占位符所在位置上显示,如果此时布局中已包含该视图,则视图将从原有位置消失