1. LinearLayout(线性布局)
项目示例:cn.edu.linearLayout
特点
将所有子视图按单一方向(水平或垂直)顺序排列,支持权重机制分配剩余空间。
核心功能
- 通过 orientation 属性控制排列方向
- 通过 layout_weight 实现空间比例分配
- 通过 gravity 控制子视图对齐方式
适用场景
简单的列表式布局(如设置页面)、表单页面(标签与输入框的线性排列)、工具栏按钮组等规整排列的场景。
优缺点
简单直观、易于理解,权重机制灵活;但嵌套过多会影响性能,不适合复杂的相对位置关系。
2. RelativeLayout(相对布局)
项目示例:cn.edu.relativelayout
特点
子视图通过相对位置进行定位,可以相对于父容器或其他视图进行对齐,灵活性较高。
核心功能
- 相对于父容器的定位(如顶部对齐、居中对齐、底部对齐等)
- 相对于其他视图的定位(如位于某视图右侧、下方、左侧对齐等)
适用场景
复杂的平面布局(无需嵌套)、表单中标签与输入框的对齐、简单的自适应界面。
优缺点
可以避免多层嵌套,定位方式灵活;但约束关系不够直观,维护时容易出错,性能上不如 ConstraintLayout。
3. TableLayout(表格布局)
项目示例:cn.edu.tablelayout
特点
以表格形式组织视图,通过行(TableRow)和列自动形成网格结构,无需显式定义列数。
核心功能
- 自动创建列,各列宽度根据内容自适应
- 支持列的拉伸、收缩和隐藏
- 支持子视图跨越多列
适用场景
表单类界面(注册、登录、设置页面)、数据表格展示、日历、计算器等网格规整的布局。
优缺点
适合规整的表格数据,代码语义清晰;但灵活性较差,难以应对复杂的不规则布局,性能不如 ConstraintLayout。
4. ConstraintLayout(约束布局)
项目示例:cn.edu.neonlamp
特点
通过约束定义视图之间的相对位置,实现扁平化布局,极大减少嵌套层级,是 Android 官方推荐的现代布局方式。
核心功能
- 通过约束定义视图与父容器或其他视图的位置关系
- 支持百分比宽度和高度,实现响应式设计
- 支持偏移比例调节
- 支持链式布局,实现视图组的均匀分布
适用场景
几乎任何类型的界面,特别适合复杂但需要高性能的布局,以及需要响应式设计的界面。
优缺点
扁平化设计性能优秀,布局能力强大(支持百分比、链、圆形定位等),Android Studio 提供良好的可视化编辑支持;但学习曲线较陡,XML 代码相对冗长,需要添加依赖库。
- LinearLayout:适合简单线性排列,代码简洁
- RelativeLayout:适合避免嵌套的平面布局,但逐渐被 ConstraintLayout 取代
- TableLayout:适合规整的表格数据和表单
- ConstraintLayout:现代 Android 开发首选,性能最优,功能最强
在现代开发中,推荐优先使用 ConstraintLayout,可以应对绝大多数界面需求,同时保持良好的性能。其他布局则在特定场景下依然有其适用价值。