依赖布局constraintlayout

约束布局 ConstraintLayout,也有人把它称作“增强型的相对布局”,扁平式的布局方式,无任何嵌套,减少布局的层级,优化渲染性能。

如果你的 Android Studio 版本是 2.3 正式版,那么在你创建一个新项目时,你的 Activity 布局文件的根布局默认就是 ConstraintLayout。

如果不是就要在 app/build 文件中添加 ConstraintLayout 的依赖.如下:

compile 'com.android.support.constraint:constraint-layout:1.0.2'//正式版本

ConstraintLayout 支持可视化的方式编写界面,也就是说你完全可以以拖拽的方式来完成界面的布局。比如我们在界面添加一个 TextView 控件,那么我们只需在左侧 Palette 面板上拖一个 TextView 就可以了

使用 ConstraintLayout 后基本可以抛弃 LinearLayout 和 RelativeLayout 的使用,完全不需要任何嵌套就可以实现复杂的 UI,使用起来特别清爽。减少了很多的嵌套的层级,这样 View 在渲染的时候,减少了很多多余的 measure 和 layout 的开销,如果嵌套的层次越多,提升的效果越明显。

在项目中引用需要

确保你的maven.google.com代码库已在模块级build.gradle文件中声明:

repositories {
    google()
}
 

然后将该库作为依赖项添加到同一个build.gradle文件中.

相对定位:相对定位是部件对于另一个位置的约束。

相对定位的常用属性:

layout_constraintLeft_toLeftOf

layout_constraintLeft_toRightOf

layout_constraintRight_toLeftOf

layout_constraintRight_toRightOf

layout_constraintTop_toTopOf

layout_constraintTop_toBottomOf

layout_constraintBottom_toTopOf

layout_constraintBottom_toBottomOf

layout_constraintBaseline_toBaselineOf

layout_constraintStart_toEndOf

layout_constraintStart_toStartOf

layout_constraintEnd_toStartOf

layout_constraintEnd_toEndOf

上面属性中有一个比较有趣的layout_constraintBaseline_toBaselineOf

Baseline指的是文本基线

角度定位指的是可以用一个角度和一个距离来约束两个空间的中心。

边距: 常用margin

ConstraintLayout的边距常用属性如下:

android:layout_marginStart

android:layout_marginEnd

android:layout_marginLeft

android:layout_marginTop

android:layout_marginRight

android:layout_marginBottom

控件在ConstraintLayout里面要实现margin,必须先约束该控件在ConstraintLayout里的位置。

在使用margin的时候要注意两点:

控件必须在布局里约束一个相对位置

margin只能大于等于0

goneMargin主要用于约束的控件可见性被设置为gone的时候使用的margin值,属性如下:

layout_goneMarginStart

layout_goneMarginEnd

layout_goneMarginLeft

layout_goneMarginTop

layout_goneMarginRight

layout_goneMarginBottom

居中和偏移:

layout_constraintHorizontal_bias 水平偏移

layout_constraintVertical_bias 垂直偏移

假如现在要实现水平偏移,给TextView1的layout_constraintHorizontal_bias赋一个范围为 0-1 的值,假如赋值为0,则TextView1在布局的最左侧,假如赋值为1,则TextView1在布局的最右侧,假如假如赋值为0.5,则水平居中,假如假如赋值为0.3,则更倾向于左侧。

在RelativeLayout中,把控件放在布局中间的方法是把layout_centerInParent设为true,而在ConstraintLayout中的写法是:

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

意思是把控件的上下左右约束在布局的上下左右,这样就能把控件放在布局的中间了。同理RelativeLayout中的水平居中layout_centerHorizontal相当于在ConstraintLayout约束控件的左右为parent的左右;RelativeLayout中的垂直居中layout_centerVertical相当于在ConstraintLayout约束控件的上下为parent的上下。

尺寸约束:

控件的尺寸可以通过四种不同方式指定:

使用指定的尺寸

使用wrap_content,让控件自己计算大小

当控件的高度或宽度为wrap_content时,可以使用下列属性来控制最大、最小的高度或宽度:

android:minWidth 最小的宽度

android:minHeight 最小的高度

android:maxWidth 最大的宽度

android:maxHeight 最大的高度

使用 0dp (MATCH_CONSTRAINT)

官方不推荐在ConstraintLayout中使用match_parent,可以设置 0dp (MATCH_CONSTRAINT) 配合约束代替match_parent。

宽高比:

当宽或高至少有一个尺寸被设置为0dp时,可以通过属性layout_constraintDimensionRatio设置宽高比。

Chains

Chains指的是一条横向或纵向的链。如果两个或以上控件通过下图的方式约束在一起,就可以认为是他们是一条链。

AAffA0nNPuCLAAAAAElFTkSuQmCC

用代码表示:

android:id="@+id/TextView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toLeftOf="@+id/TextView2" />

android:id="@+id/TextView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:layout_constraintLeft_toRightOf="@+id/TextView1"

app:layout_constraintRight_toLeftOf="@+id/TextView3"

app:layout_constraintRight_toRightOf="parent" />

android:id="@+id/TextView3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:layout_constraintLeft_toRightOf="@+id/TextView2"

app:layout_constraintRight_toRightOf="parent" />

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值