ConstraintLayout属性学习

ConstraintLayout 的相对定位属性

layout_constraintLeft_toLeftOf=”@id/…”:控件自身的左边和目标控件的左边对齐。
layout_constraintLeft_toRightOf=”@id/…”:控件自身的左边和目标控件的右边对齐。
layout_constraintRight_toRightOf=”@id/…”:控件自身的右边和目标控件的右边对齐。
layout_constraintRight_toLeftOf=”@id/…”:控件自身的右边和目标控件的左边对齐。
app:layout_constraintStart_toStartOf=”@id/…”:和上面意思差不多,就不解释了
app:layout_constraintStart_toEndOf=”@id/…”:
app:layout_constraintEnd_toEndOf=”@id/…”:
app:layout_constraintEnd_toStartOf=”@id/…”:
layout_constraintTop_toTopOf=”@id/…”:控件自身的上边和目标控件的上边对齐。
layout_constraintTop_toBottomOf=”@id/…”:控件自身的上边和目标控件的下边对齐。
layout_constraintBottom_toBottomOf=”@id/…”:控件自身的下边和目标控件的下边对齐。
layout_constraintBottom_toTopOf=”@id/…”:控件自身的下边和目标控件的上边对齐。
原文:https://blog.csdn.net/qq_33689414/article/details/75103731 

这其中的属性基本上和RelativeLayout相似,不做过多赘述,只是在RelativeLayout属性的前面加了constraint

如果将layout_constraintLeft_toLeftOf 设置为layout_constraintXXX_toYYYOf,

那么其中的XXX就代表了本控件的边框位置

其中的YYY就代表了相对于哪个控件的位置

其中设置的属性可以为parent或者一个控件的id,设置为parent就是相对于父控件

如果设置的是id,那就是相对于id对应控件的位置

Margins

当约束控件为Gone的时候,当前控件的位置会改变,为了合适的变更布局有了以下属性

* layout_goneMarginStart 
* layout_goneMarginEnd 
* layout_goneMarginLeft 
* layout_goneMarginTop 
* layout_goneMarginRight 
* layout_goneMarginBottom
当约束控件为Gone的时候,我们可以设定他与之前控件的margin值来控制此控件的位置

Guideline 辅助线
Guideline是只能用在ConstraintLayout布局里面的一个工具类,用于辅助布局,类似为辅助线,可以设置android:orientation属性来确定是横向的还是纵向的。 
- 当设置为vertical的时候,Guideline的宽度为0,高度是parent也就是ConstraintLayout的高度 
- 同样设置为horizontal的时候,高度为0,宽度是parent的宽度

重要的是Guideline是不会显示到界面上的,默认是GONE的。

Guideline还有三个重要的属性,每个Guideline只能指定其中一个: 
- layout_constraintGuide_begin,指定左侧或顶部的固定距离,如100dp,在距离左侧或者顶部100dp的位置会出现一条辅助线 
- layout_constraintGuide_end,指定右侧或底部的固定距离,如30dp,在距离右侧或底部30dp的位置会出现一条辅助线 
- layout_constraintGuide_percent,指定在父控件中的宽度或高度的百分比,如0.8,表示距离顶部或者左侧的80%的距离。
原文:https://blog.csdn.net/u011976726/article/details/79377774 


bias属性

bias属性是指在对齐父容器后,设置水平与竖直的比例。

app:layout_constraintHorizontal_bias=”0.2”:设置相对父控件距离的长度的为父控件的宽度0.2倍的位置
layout_constraintVertical_bias=”0.2”:设置相对父控件距离的长度的为父控件的长度0.2倍的位置

当设置了如下属性后,控件会处于左右居中位置

app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

如果设置

app:layout_constraintHorizontal_bias=”0.2”

则意味着将控件置于水平百分比20%处,取值从0-1,0位最左边,1位最右边

app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"

如果设置如下属性

app:layout_constraintVertical_bias=”0.2”

则意味着将控件置于数值百分比20%处,取值从0-1,0为最上面,1为最下面

ConstraintLayout设置高宽比例

当控件设置了如下属性
android:layout_width="100dp"
android:layout_height="0dp"

即为指定宽度通过设置宽高比来设置高度

如果在设置如下属性

app:layout_constraintDimensionRatio="2:1"

默认为

app:layout_constraintDimensionRatio="H,2:1"

则意味着设置宽高比为2:1,此时高度为50

当然也可设置为

app:layout_constraintDimensionRatio="W,2:1"

这意味着设置为高宽比为2:1,此时高度为200

ConstraintLayout设置链状结构(Chain Style)

Chain Style是使多个控件像链条一样显示,这个更能可以类似LinearLayout的weight属性。

要想chain style生效,控件要相互引用,比如A的右边依赖B的左边,B的左边依赖A的右边,都是设置。 如:水平方向的Chain Style.

Chain Style的分为水平和竖直方向,每种都有3中模式:

1.layout_constraintHorizontal_chainStyle=”spread”:均匀分布(包括边上控件左右的边距)
2.layout_constraintHorizontal_chainStyle=”spread_inside”:均匀分布,但是边上的控件不均匀分布(边上控件没有边距)
3.layout_constraintHorizontal_chainStyle=”packed”:控件紧挨在一起。还可以通过bias属性设置偏移量。
4.layout_constraintHorizontal_weight=”“:跟线性布局的weight差不多,width需要设置0dp,控件的大小根据设置的weight比例进行设置。
layout_constraintVertical_chainStyle=”“:和上面一样,有三种模式spread,spread_inside,packed。
layout_constraintVertical_weight=”“:

属性只有设置在第一个的时候生效,因为第一个相当于整个链的链头,一个链条的第一个元素即为头,水平方向最左边为链头,竖直方向最上方为链头,而链头的作用就是控制整条链的属性

当设置属性为packed的时候,bias的属性也要设置在第一个,可以设置整体控件的偏向

若想实现第四点,通过weight来设置内部控件的大小,要将其方向上的属性设置为0dp才可以通过weight来进行控制


原文:https://blog.csdn.net/qq_33689414/article/details/75103731 
 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值