ConstraintLayout (约束布局)
在2016年由Google I/O推出,将成为主流布局样式, 完全代替其他布局, 减少布局的层级, 优化渲染性能,作为非绑定(Unbundled)的支持库, 命名空间是app:, 即来源于本地的包命名空间. 最新版本是1.0.1(2017.4.21)
1. 添加依赖
dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.1'
}
2. 根据布局中的其他元素或视图, 确定View在屏幕中的位置。
受到三类约束:
- 即其他视图
- 父容器(parent)
- 基准线(Guideline).
3. 如何使用:
- 添加名称空间:
xmlns:app="http://schemas.android.com/apk/res-auto"
- 属性的使用:
layout_constraint[本源位置]_[目标位置]="[目标ID]"
//eg:
app:layout_constraintBottom_toBottomOf="@+id/constraintLayout"
//约束当前View的底部至目标View的底部, 目标View是constraintLayout. 即, 把当前View的底部对齐到constraintLayout的底部.
- 常见的属性:
属性的使用 | 说明 |
---|---|
app:layout_constraintLeft_toLeftOf="@+id/root" | 控件的左边缘与root的左边缘对齐 |
app:layout_constraintRight_toRightOf="@+id/root" | 控件的右边缘与root的右边缘对齐 |
app:layout_constraintBottom_toBottomOf="@+id/root" | 控件的下边缘与root的下边缘对齐 |
app:layout_constraintTop_toTopOf="@+id/=root" | 控件的上边缘与root的上边缘对齐 |
居中对齐:4个属性同时使用,就完成了居中对齐
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_head"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/dog"
app:layout_constraintBottom_toBottomOf="@id/root"
app:layout_constraintLeft_toLeftOf="@+id/root"
app:layout_constraintRight_toRightOf="@+id/root"
app:layout_constraintTop_toTopOf="@id/root" />
</android.support.constraint.ConstraintLayout>