Android ConstraintLayout你不知道的好用功能

本文只说功能,用法自行搜索

()里面为陌生度,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_defaultlayout_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_weightlayout_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" />

Flowconstraint_referenced_ids关联的控件是没有设置约束的,这一点和普通的链是不一样的,这种排列方式是Flow的默认方式none,我们可以使用app:flow_wrapMode=""属性来设置排列方式,并且我们还可以使用flow_horizontalGapflow_verticalGap分别设置两个view在水平和垂直方向的间隔

  • none(默认值):所有引用的view形成一条链,水平居中,超出屏幕两侧的view不可见
  • chian:所引用的view形成一条链,超出部分会自动换行,同行的view会平分宽度。
  • aligned:所引用的view形成一条链,但view会在同行同列,start对齐(View大小不同时最后一行不保证效果)。

flow_wrapMode的值是chianaligned时,我们还可以针对不同的链进行配置。

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属性为alignedchian时,通过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)

ImageFilterButtonImageFilterView可以使用两个属性来设置图片资源的圆角,分别是roundPercentroundroundPercent接受的值类型是0-1的小数,根据数值的大小会使图片在方形和圆形之间按比例过度,round=可以设置具体圆角的大小。

可以使用altSrc来设置第二个图片资源,altSrc提供的资源将会和src提供的资源通过crossfade属性形成交叉淡化效果,默认情况下,crossfade=0altSrc所引用的资源不可见,取值在0-1。

warmth属性可以用来调节色温,brightness属性用来调节亮度,saturation属性用来调节饱和度,contrast属性用来调节对比度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值