1. LinearLayout(线性布局)
核心定义:线性布局是最基础的布局之一,子控件会按水平(horizontal)或垂直(vertical)方向依次排列在一条直线上,不会自动换行。
关键特点:
通过 `android:orientation` 指定排列方向。
支持 `layout_weight` 属性,可按比例分配剩余空间,实现灵活的宽度 / 高度分配。
适用场景:简单的线性排列界面,如登录表单、导航栏等。
2.FrameLayout(帧对局)
核心定义:帧布局是最简单的布局,所有子控件会层叠在容器的左上角(或指定位置) ,后添加的控件会覆盖在前面的控件之上。
关键特点:
层叠显示:控件像画框一样层层叠加,适合做重叠效果或作为容器(如 Fragment 容器)。
位置可控:通过 `layout_gravity` 可指定子控件在帧布局中的对齐方式(如居中、底部等)。
适用场景:简单的重叠控件、加载动画、Fragment 容器、卡片叠加效果等。
3. RelativeLayout(相对布局)
核心定义:相对布局允许子控件相对于父容器或其他兄弟控件来确定位置,是实现复杂界面的灵活选择。
关键特点:
位置依赖丰富:可设置 “在父容器底部”“在某控件右侧”“在某控件上方” 等相对关系。
减少布局层级:相比线性布局,复杂界面用相对布局可减少嵌套,提升渲染性能。
适用场景:需要灵活定位控件的复杂界面,如商品详情页、个人中心页。
4.TableLayout(表格布局)
核心定义:表格布局以行(TableRow)和列的形式组织子控件,类似 HTML 表格,子控件会被自动对齐到单元格中。
关键特点:
列数由包含最多控件的行决定,同一列的单元格宽度自动对齐。
支持 `stretchColumns`(拉伸列)、`shrinkColumns`(收缩列)、`collapseColumns`(隐藏列)等属性,适配不同屏幕。
总结对比
适用场景:需要规整表格形式的界面,如计算器、日程表、数据报表等。
| 布局类型 | 核心特点 | 典型场景 |
|---|---|---|
| LinearLayout | 线性排列,支持权重分配 | 线性表单、导航栏 |
| RelativeLayout | 相对定位,灵活自由 | 复杂界面、商品详情页 |
| TableLayout | 表格行列,自动对齐 | 计算器、数据表格 |
| FrameLayout | 层叠覆盖,简单高效 | 加载动画、Fragment 容器 |