Android学习笔记

疯狂Android讲义


文章目录

  • Android学习笔记
  • 疯狂Android讲义
  • 第2章 Android 应用的界面编程
  • 2.2 第1组 UI组件:布局管理器
  • 2.2.5 约束布局


第2章 Android 应用的界面编程

2.2 第1组 UI组件:布局管理器

2.2.5 约束布局

约束布局是Android 8新增的布局方式,从功能上讲,约束布局相当于相对布局的改进:相对布局只能控制组件在父容器中居中,或者与父容器(或另一个组件)左对齐、右对齐、顶端对齐、底端对齐,或者控制组件在另一个组件的左边、右边、上方或下方。但如果要控制组件位于父容器的某个百分比处,或者控制组件位于另一个组件的左边25dp处,相对布局就无能为力了,此时就可借助于约束布局。

使用 Android Studio 新建项目时添加的 Actvitiy 的默认布局文件自动使用约束布局。

android约束布局只能拖拽一个 android约束布局详解_android

约束既可基于父容器,也可基于其他组件。

向界面中拖入一个按钮

android约束布局只能拖拽一个 android约束布局详解_android约束布局只能拖拽一个_02

通过拖动操作设置建立约束。

android约束布局只能拖拽一个 android约束布局详解_android约束布局只能拖拽一个_03

android约束布局只能拖拽一个 android约束布局详解_Android_04

因为在按钮的左、上、下添加了约束,因此可以在这3个方向设置相对距离。

android约束布局只能拖拽一个 android约束布局详解_android_05

设置该组件的layout_width、layout_height。

约束布局中的组件的 layout_width、layout_height 支持如下3个值:

  • wrap content:该组件的宽度或高度刚够显示组件内容。
  • 固定长度值:设置该组件的宽度或高度为固定值。
  • match_constraint (odp):该组件的宽度或高度完全按约束计算。

android约束布局只能拖拽一个 android约束布局详解_学习_06

layout_constraintVertical_bias属性用于设置该组件在父容器中垂直方向上的相对百分比。

如果希望设置该组件在父容器中水平方向上的相对百分比,则可通过设置app:layotconstraintHorizontal_bias属性进行控制。

定位约束方法对应的属性:

  • app:layout_constraintXxx_toXxxOf:设置该组件与父容器(或其他组件)对齐。其中 Xxx可以是 Start、End、Top、Bottom等值,具体可根据实际情况设置。该属性的属性值可以是parent(代表父容器)或其他组件的ID。
  • android:layout_marginXxx:设置该组件与参照组件的间距。其中Xxx可以是 Start、End、Top、Bottom等值,具体可根据实际情况设置。
  • app:layout_constraintXxx_bias:设置该组件在参照组件中的百分比。其中 Xxx可以是Horizontal 或 Vertical。

有时候,一批组件都需要放在容器的某个位置,或者某个组件需要参照的组件并不存在,为此约束布局为之提供了引导线(GuideLine)。

引导线是约束布局中不可见的、却实实在在存在的组件,引导线唯一的作用就是被其他组件作为定位的参照。

引导线分为两种:水平引导线和垂直引导线。引导线对应于Guideline元素,该元素可支持下属性:

  • android:orientation:该属性指定引导线的方向。该属性支持vertical和 horizontal两个值,代表垂直引导线和水平引导线。
  • app:layout_constraintGuide_begin:该属性指定引导线到父容器起始处的距离。该属性值可以是一个距离值。
  • app:layout_constraintGuide_end:该属性指定引导线到父容器结束处的距离。该属性值可以是一个距离值。
  • app:layout_constraintGuide_percent:该属性指定引导线位于父容器的指定百分比处。

上面的后3个属性的作用是相同的,只是代表引导线的3种不同的定位方式,它们都用于控制引导线的位置,因此只要指定其中之一即可。

也可以通过引导线图标添加引导线。

总体来说,约束布局是对 iOS 布局的一次完美模仿,这种布局方式功能比较强大,但在实际使用时也比较烦琐。