您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

Android最强布局——ConstraintLayout约束布局

时间:01-14来源:作者:点击数:

ConstraintLayout

首先,现附上官方文档:ConstraintLayout官方文档

约束布局ConstraintLayout 是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。从 Android Studio 2.3 起,官方的模板默认使用 ConstraintLayout。

然而,ConstraintLayout的出现就是为了解决布局嵌套的问题。在开发过程中经常能遇到一些复杂的UI,可能会出现布局嵌套过多的问题,嵌套得越多,设备绘制视图所需的时间和计算功耗也就越多。

在使用过程中,ConstraintLayout 可以看做是一个更强大的 RelativeLayout,它提供了更多的 API 来约束控件的相对关系,更容易满足复杂的页面布局。

相对定位:

a控件的xx位于b控件的xx

layout_constraintLeft_toLeftOf a控件的左边位于b控件的右边

layout_constraintLeft_toRightOf

layout_constraintRight_toLeftOf

layout_constraintRight_toRightOf

layout_constraintTop_toTopOf

layout_constraintTop_toBottomOf

layout_constraintBottom_toTopOf

layout_constraintBottom_toBottomOf

layout_constraintBaseline_toBaselineOf

文本对齐:两个TextView的高度不一致,但是又希望他们文本对齐

layout_constraintStart_toEndOf

layout_constraintStart_toStartOf

layout_constraintEnd_toStartOf

layout_constraintEnd_toEndOf

居中:

控件上下左右居中显示:

app:layout_constraintLeft_toLeftOf="parent”

app:layout_constraintRight_toRightOf=“parent”

app:layout_constraintTop_toTopOf=“parent”

app:layout_constraintBottom_toBottomOf=“parent”

居中偏移(bias)

在上述居中的情况下,可以设置偏移量

(0-1)0表示最左,1表示最右

layout_constraintHorizontal_bias 水平偏移

layout_constraintVertical_bias 垂直偏移

圆形定位(角度定位)

可以让一个控件以另一个控件的中心为中心点,来设置其相对与该中心点的距离和角度

  1. app:layout_constraintCircle 需要看齐的参照物,图中 B 就是把 A 当做参照物进行约束的
  2. app:layout_constraintCircleAngle 要旋转的角度,最上方 0 度,默认就是 0 度,顺时针开始算。
  3. app:layout_constraintCircleRadius 两个控件中心点的距离
边距:

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

2.margin只能大于等于0

android:layout_marginStart

android:layout_marginEnd

android:layout_marginLeft

android:layout_marginTop

android:layout_marginRight

android:layout_marginBottom

goneMargin

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

layout_goneMarginStart

layout_goneMarginEnd

layout_goneMarginLeft

layout_goneMarginTop

layout_goneMarginRight

layout_goneMarginBottom

尺寸约束:

1.使用指定的尺寸

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

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

android:minWidth 最小的宽度

android:minHeight 最小的高度

android:maxWidth 最大的宽度

android:maxHeight 最大的高度

注意!当ConstraintLayout为1.1版本以下时,使用这些属性需要加上强制约束,如下所示:

app:constrainedWidth=”true”

app:constrainedHeight=”true”

3.使用 0dp (MATCH_CONSTRAINT)

官方不推荐在ConstraintLayout中使用match_parent,可以设置 0dp

宽高比

当宽或高至少有一个尺寸被设置为0dp时,app:layout_constraintDimensionRatio=“1:1”

设置控件宽高比

约束链

能够在水平或垂直方向控件之间相互约束而组成的一条链就是约束链,约束链是由开头的控件进行属性控制的。没错就是跟着大哥走

app:layout_constraintHorizontal_chainStyle=“xxx”

  • packed:控件紧挨在一起。还可以通过bias属性设置偏移量。
  • spread:均与分布控件。
  • spread_inside:均与分布控件,但是两边控件贴边。

app:layout_constraintHorizontal_weight=“x”

app:layout_constraintVertical_weight=“x”

当宽度设为0dp,就可以使用水平权重。

当长度设为0dp,就可以使用垂直权重

辅助工具

Group

Group可以把多个控件归为一组,方便隐藏或显示一组控件

<android.support.constraint.Group

android:id="@+id/group"

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:visibility=“invisible” 隐藏但存在在 gone 隐藏不存在

app:constraint_referenced_ids=“TextView1,TextView3” />

Guideline

Guideline 是约束布局中一个特殊的辅助布局类,可以创建水平或者垂直的参考线,其他的控件可以根据这个参考线来进行布局,它本质是不可见的控件。

参考线的位置属性:

orientation:vertical/horizontal

layout_constraintGuide_begin 指定距离左/上边开始的固定位置

layout_constraintGuide_end 指定距离右/下边开始的固定位置

layout_constraintGuide_percent 指定位于布局中所在的百分比

Barrier

constraint_referenced_ids 引用多个控件,看作一个整体来添加一个与另外一个控件限制最大宽/高的约束。

通过 app:barrierDirection 属性来决定 Barrier 的方向

设有3个控件ABC,C在AB的右边,但是AB的宽是不固定的,这个时候C无论约束在A的右边或者B的右边都不对。当出现这种情况可以用Barrier来解决。Barrier可以在多个控件的一侧建立一个屏障

在这里插入图片描述
  <android.support.constraint.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="right"
        app:constraint_referenced_ids="TextView1,TextView2" />

app:barrierDirection为屏障所在的位置,可设置的值有:bottom、end、left、right、start、top

app:constraint_referenced_ids为屏障引用的控件,可设置多个(用“,”隔开)

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门