本文只说功能,用法自行搜索
()里面为陌生度,100为很陌生 0为这都不知?
1. 角度约束(90)
一个控件在某个控件的某个角度的位置
app:layout_constraintCircle="" 目标控件id
app:layout_constraintCircleAngle="" 对于目标的角度(0-360)
app:layout_constraintCircleRadius="" 到目标中心的距离
2. 百分比偏移(30)
让控件在父布局的水平方向或垂直方向的百分之多少的位置
app:layout_constraintHorizontal_bias="" 水平偏移 取值范围是0-1的小数
app:layout_constraintVertical_bias="" 垂直偏移 取值范围是0-1的小数
3. GONE Margin(20)
GONE Margin
,当依赖的目标view
隐藏时会生效的属性,例如B被A依赖约束,当B隐藏时B会缩成一个点,自身的margin
效果失效,A设置的GONE Margin
就会生效
4. 0dp(MATCH_CONSTRAINT)(99)
0dp的作用会根据设置的类型而产生不同的作用,进行设置类型的属性是
layout_constraintWidth_default和
layout_constraintHeight_default,取值可为
spread、percent、wrap
app:layout_constraintWidth_default="spread|percent|wrap" app:layout_constraintHeight_default="spread|percent|wrap"
- spread(默认):沾满可以沾满的空间
- percent:按照父布局的百分比设置
该模式需要配合layout_constraintWidth_percent
(取值是0-1的小数)使用,但是写了layout_constraintWidth_percent
后,layout_constraintWidth_default="percent"
其实就可以省略掉了。 - wrap:匹配内容大小但不超过约束限制(既wrap_content又match_parent)
5. 比例宽高(Ratio)(60)
ConstraintLayout
中可以对宽高设置比例,前提是至少有一个约束维度设置为0dp
,这样比例才会生效,该属性可使用两种设置:
1.浮点值,表示宽度和高度之间的比率
2.宽度:高度,表示宽度和高度之间形式的比率
app:layout_constraintDimensionRatio="" 宽高比例
6. Chain链的Weight (40)
使用layout_constraintHorizontal_weight
和layout_constraintVertical_weight
进行设置链元素的权重
7. Guideline(参考线)(20)
android:orientation="horizontal|vertical" 辅助线的对齐方式
app:layout_constraintGuide_percent="0-1" 距离父级宽度或高度的百分比(小数形式)
app:layout_constraintGuide_begin="" 距离父级起始位置的距离(左侧或顶部)
app:layout_constraintGuide_end="" 距离父级结束位置的距离(右侧或底部)
8. Barrier(屏障)(80)
<!-- 用于控制Barrier相对于给定的View的位置 -->
app:barrierDirection="top|bottom|left|right|start|end"
<!-- 取值是要依赖的控件的id,Barrier将会使用ids中最大的一个的宽/高作为自己的位置 -->
app:constraint_referenced_ids="id,id"
9. Group(组)(10)
app:constraint_referenced_ids="id,id" 加入组的控件id
需要注意的是:Group只能控制显示和隐藏
10. Placeholder(占位符)(70)
Placeholder
的作用就是占位,它可以在布局中占好位置,通过app:content=""
属性,或者动态调用setContent()
设置内容,来让某个控件移动到此占位符中
11. Flow(流式虚拟布局)(99)
<androidx.constraintlayout.helper.widget.Flow
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:constraint_referenced_ids="flow的id"
app:layout_constraintTop_toTopOf="parent" />
Flow
的constraint_referenced_ids
关联的控件是没有设置约束的,这一点和普通的链是不一样的,这种排列方式是Flow
的默认方式none
,我们可以使用app:flow_wrapMode=""
属性来设置排列方式,并且我们还可以使用flow_horizontalGap
和flow_verticalGap
分别设置两个view
在水平和垂直方向的间隔
- none(默认值):所有引用的
view
形成一条链,水平居中,超出屏幕两侧的view
不可见 - chian:所引用的
view
形成一条链,超出部分会自动换行,同行的view
会平分宽度。 - aligned:所引用的
view
形成一条链,但view
会在同行同列,start对齐(View大小不同时最后一行不保证效果)。
当flow_wrapMode
的值是chian
或aligned
时,我们还可以针对不同的链进行配置。
app:flow_horizontalStyle="packed|spread|spread_inside" 所有水平链的配置
app:flow_verticalStyle="packed|spread|spread_inside" 所有垂直链的配置
app:flow_firstHorizontalStyle="packed|spread|spread_inside" 第一条水平链的配置,其他条不生效
app:flow_firstVerticalStyle="packed|spread|spread_inside" 第一条垂直链的配置,其他条不生效
app:flow_lastHorizontalStyle="packed|spread|spread_inside" 最后一条水平链的配置,其他条不生效
app:flow_lastVerticalStyle="packed|spread|spread_inside" 最后一条垂直链的配置,其他条不生效
组件对齐约束
<!-- top:顶对齐、bottom:底对齐、center:中心对齐、baseline:基线对齐 -->
app:flow_verticalAlign="top|bottom|center|baseline"
<!-- start:开始对齐、end:结尾对齐、center:中心对齐 -->
app:flow_horizontalAlign="start|end|center"
数量约束
当flow_wrapMode
属性为aligned
和chian
时,通过flow_maxElementsWrap
属性控制每行最大的子View
数量
12. Layer(层布局)(99)
常用来增加背景、或者共同动画,图层 (Layer
) 在布局期间会调整大小,其大小会根据其引用的所有视图进行调整,代码的先后顺序也会决定着它的位置
<androidx.constraintlayout.helper.widget.Layer
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/common_rect_white_100_10"
android:padding="10dp"
app:constraint_referenced_ids="AndroidImg,NameTv" />
13. ImageFilterButton & ImageFilterView (99)
ImageFilterButton
和ImageFilterView
可以使用两个属性来设置图片资源的圆角,分别是roundPercent
和round
,roundPercent
接受的值类型是0-1的小数,根据数值的大小会使图片在方形和圆形之间按比例过度,round=
可以设置具体圆角的大小。
可以使用altSrc
来设置第二个图片资源,altSrc
提供的资源将会和src
提供的资源通过crossfade
属性形成交叉淡化效果,默认情况下,crossfade=0
,altSrc
所引用的资源不可见,取值在0-1。
warmth
属性可以用来调节色温,brightness
属性用来调节亮度,saturation
属性用来调节饱和度,contrast
属性用来调节对比度