新布局ConstrainLayout属性总结

ConstrainLayout 是Google在AndroidStudio2.2中发布的一个新布局,该布局与Relative相似,但是还是有一些不同。借助ConstrainLayout我们对复杂的布局实现0嵌套,而这一点在以往的LinearLayout中是很难做到的,在RelativeLayout中强行实现也可以,不过…实在是有写蛋疼。理解ConstrainLayout可以像其名字一样,借助弹簧牵引的模型来理解。下面,将一些常用的属性总结如下,方便记忆。

四周牵引

layout_constraintLeft_toLeftOf: 将目标控件的左侧牵引到另外一个控件的左侧
layout_constraintRight_toLeftOf: 将目标控件的右侧牵引到另外一个控件的左侧
layout_constraintLeft_toRightOf: 将目标控件的左侧牵引到另外一个控件的右侧
layout_constraintRight_toRightOf: 将目标控件的右侧牵引到另外一个控件的右侧
layout_constraintTop_toTopOf: 将目标控件的上侧牵引到另外一个控件的上侧
layout_constraintTop_toBottomOf: 将目标控件的上侧牵引到另外一个控件的下侧
layout_constraintBottom_toTopOf: 将目标控件的下侧牵引到另外一个控件的上侧
layout_constraintBottom_toBottomOf: 将目标控件的下侧牵引到另外一个控件的下侧

基线对齐

layout_constrainBaseline_toBaselineOf:与目标控件的基线对齐

start,end类(与left,right类似)

layout_constrainStart_toEndOf:将目标控件的左侧与另一控件的右侧对齐
layout_constrainStart_toStartOf:将目标控件的左侧与另一控件的左侧对齐
layout_constrainEnd_toStartOf:将目标控件的右侧与另一控件的左侧对齐
layout_constrainEnd_toEndOf:将目标控件的右侧与另一控件的右侧对齐

布局边距

layout_marginStart:左边距
layout_marginEnd:右边距
layout_marginLeft:左边距
layout_marginRight:右边距
layout_marginLeft:左边距
layout_marginTop:上边距
layout_marginBottom:下边距

基准线(guideline)

orientation:vertical/horizontal  基准线的方向
layout_constrainGuide_begin:基准线起点
layout_constrainGuide_end:基准线终点
layout_constrainGuide_percent:基准线百分比模式,用于指定位置

牵引力

layout_constrainHorizontal_bias:水平方向上的牵引力
layout_constrainVertical_bias:垂直方向上的牵引力

链样式(ChainStyle)

当几个控件互相牵引,组成一个链时,此时我们可以对该链的布局进行一些调整,类似flexbox的属性:
常见的属性有:spread, packed, spread_inside

layout_constrainHorizontal_chainStyle:水平方向上的样式
layout_constrainVertical_chainStyle:垂直方向上的样子

套用官网的示例:
chain styles

链权重

同样的,当几个控件组成链时,可以像LinearLayout一样,对其设置权重分布,调节大小

layout_constrainVertical_weight:设置该控件在链中的权重

宽高属性

ConstrainLayout的宽高属性与普通的布局有所不同,其属性分为三种:wrap_content,具体数值,match_contraint。其中前两种和其他布局类似,当宽高属性设置为match_contraint时,其xml属性显示为:0dp,表现属性为布满约束的区域。

与此同时,ConstrainLayout还支持一种比例的属性:

layout_constrainDimensionRatio:"w,13:2"/"h, 23:23",其中w,h可以不注明, 默认为宽高比
使用总结:

使用约束布局可以在很大程度上减少之前大量使用Linearlayout等造成的布局层次过深的问题,使用上比RelativeLayout要方便一些,但是在特殊情况的适配上(比如文字过多等),要特别主意。IDE自带的拖拽工具可以满足简单页面的布局,但是复杂页面在实际体验上,感觉不如手写来的快…目前来看,还是不够智能。

总体上讲,可以一用。︿( ̄︶ ̄)︿

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值