Android-ConstraintLayout约束布局

ConstraintLayout谷歌官方文档
推荐文章《约束布局ConstraintLayout看这一篇就够了》
从Android Studio2.3起,官方的模版默认使用ConstraintLayout

使用方法

添加依赖

在app/build。gradle文件中添加依赖
implementation 'com.android.support.constraint:constraint-layout:1.1.3'

定位方式

相对定位

相对定位意思就是相对于另外一个控件的位置,类似于relativelayout
26709b7cd7aba3a798c887f6404b0ef1.png

属性功能
layout_constraintLeft_toLeftOf将控件的左边定位到另一控件的左边
layout_constraintLeft_toRightOf
layout_constraintRight_toLeftOf223bf258bc96e2d01fab73894039c6be.png
layout_constraintRight_toRightOf
layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf将控件的底部定位到另一控件的顶部 9b04147212204f2512d9442c897bc012.png
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOfBaseline指的是文本基线 如果两个button高度不同 使用此属性可以以文本内容为基线 对齐控件
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf
角度定位

用一个角度和一个距离来约束两个空间的中心

角度定位主要是使用一下三个属性设置
CircleAngle 设置角度
CircleRadius 设置长度

app:layout_constraintCircle="@id/button1"
app:layout_constraintCircleAngle="60"
app:layout_constraintCircleRadius="140dp"

db6c976a2e683c37ac8ee3182e2cf173.png

Margin属性

常用margin和传统类似需要注意的是goneMargin

goneMargin主要用于约束的控件可见性被设置为gone的时候,margin的属性才开始生效

属性功能
layout_goneMarginStart功如其名
layout_goneMarginEnd功如其名
layout_goneMarginLeft功如其名
layout_goneMarginTop功如其名
layout_goneMarginRight功如其名
layout_goneMarginBottom功如其名
居中
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
尺寸约束
  • 指定尺寸
  • 使用wrap_content
    有系统自动计算
  • 使用0dp
    官方不推荐在ConstraintLayout中使用match_parent
    713952d028d5d155275f646b09f11559.png
    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="button       1"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:background="@color/colorAccent"
        android:textColor="#fff"
        android:padding="20dp"
        />

ffee04e2fd8476fea905515eaea159fe.png

        android:layout_width="0dp"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"

通过这样的方式,会自动拉伸控件

  • 使用宽高比

    app:layout_constraintDimensionRatio="6:6"

    9943368eba5b77a3fa64af5f39f28292.png

链在单个轴(水平或垂直)中提供类似ROW的行为

如果一组小部件通过双向连接链接在一起,就可以被视为链
0d4c869b81af0aee6ad10dda098fcc4f.png

链表

**使用链表的相关知识可以替代线性布局的权重问题 **

使用
layout_constraintHorizontal_chainStyle改变整条链的样式
e7c060e4e6e929a3b9e9e5fd40530423.png

属性值说明
spread默认值 展开元素
spread inside展开元素 但是两边的元素 贴近parent
packet所有元素贴近在中心
weighted Chain带权值展开

weighted Chain

step1:需要将链中控件的每个控件的layout_width设置为0dp
step2:
使用一下属性设置权值

  app:layout_constraintVertical_weight=""
        app:layout_constraintHorizontal_weight=""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值