Android 布局资源位于 res/layout/ 目录下,用于定义界面的结构、控件位置与层级关系。下面详细介绍开发中最核心、最常用的四种布局:
- LinearLayout(线性布局)
- RelativeLayout(相对布局)
- FrameLayout(帧布局)
- ConstraintLayout(约束布局)
一、LinearLayout(线性布局)
1. 基本概念
LinearLayout 是 Android 中最基础、最常用的布局,它会将所有子控件按照水平或垂直方向依次线性排列,像排队一样,不会重叠。
2. 核心属性
(1)android:orientation
决定排列方向:
vertical:垂直排列(从上到下)horizontal:水平排列(从左到右)
(2)android:layout_weight
权重属性,用于按比例分配父布局剩余空间,是实现自适应界面的关键。
- 必须配合
0dp使用(宽度或高度设为 0dp) - 权重值越大,占比越大
(3)android:gravity
控制子控件在布局内部的对齐方式:
center:居中center_horizontal:水平居中center_vertical:垂直居中left / right / top / bottom
(4)android:layout_gravity
子控件自身在父布局中的对齐方式。
3. 优点
- 简单直观,易于理解和维护
- 权重系统非常适合比例布局
- 性能轻量
4. 缺点
- 复杂界面需要多层嵌套,容易导致性能问题
- 不适合不规则定位
5. 适用场景
- 表单、列表项、按钮横排
- 需要按比例分配空间的界面
二、RelativeLayout(相对布局)
1. 基本概念
RelativeLayout 允许子控件相对于父布局或其他兄弟控件进行定位,自由度远高于 LinearLayout,可大幅减少嵌套。
2. 核心属性分类
(1)相对于父布局
layout_centerInParent="true":在父布局居中layout_alignParentTop:顶部对齐父布局layout_alignParentBottom:底部对齐layout_alignParentLeft/Right:左右对齐
(2)相对于其他控件
layout_below="@id/xxx":位于某控件下方layout_above="@id/xxx":位于某控件上方layout_toLeftOf/layout_toRightOflayout_alignTop/layout_alignBottom:对齐某控件边缘
3. 优点
- 定位灵活,适合复杂界面
- 减少布局嵌套层级
4. 缺点
- 关系复杂时容易出现依赖混乱
- 性能略低于 LinearLayout
- 已逐渐被 ConstraintLayout 替代
5. 适用场景
- 个人中心、详情页、不规则定位界面
- 中等复杂度 UI
三、FrameLayout(帧布局)
1. 基本概念
FrameLayout 是最简单、最轻量的布局,所有子控件默认叠加在左上角,后添加的控件会覆盖在先添加的控件之上。
2. 核心属性
只有一个关键对齐属性:
android:layout_gravity:控制子控件在帧布局中的位置(center、top、bottom 等)
3. 优点
- 渲染速度极快
- 结构最简单
- 非常适合作为容器
4. 缺点
- 几乎没有定位能力,只能叠加或简单对齐
- 不适合复杂界面
5. 适用场景
- Fragment 容器
- 图片 + 文字遮罩层
- 加载动画、悬浮控件
- 卡片层叠效果
四、TableLayout(表格布局)
1. 基本概念
TableLayout 是以行和列的形式排列控件,像 HTML 表格一样,一行一行、一列一列对齐。
它继承自 LinearLayout,垂直排列。
2. 核心结构
<TableLayout>:表格根布局<TableRow>:表格的每一行(必须放在 TableLayout 里)- 控件:自动成为表格的一列
3. 核心属性
TableLayout 属性
- **
android:stretchColumns**设置可拉伸的列(用列号,从 0 开始,*表示所有列) - **
android:shrinkColumns**设置可收缩的列(内容过长时自动压缩) - **
android:collapseColumns**隐藏指定列
TableRow 属性
- 内部控件会自动平分宽度,按列排列
- 无需设置宽高,会自动适配
4. 优点
- 天然适合表单、网格、对齐整齐的界面
- 不用手动计算位置,自动对齐
- 结构清晰,适合表单类页面
5. 缺点
- 不够灵活,只能按表格形式排列
- 复杂 UI 不适用
6. 适用场景
- 登录表单
- 注册表单
- 整齐对齐的信息展示(个人资料、设置页)
五、四种布局对比总结(清晰版)
表格
| 布局 | 定位方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| LinearLayout | 线性排列 | 简单、权重好用 | 嵌套多 | 简单线性界面 |
| RelativeLayout | 相对位置 | 灵活、少嵌套 | 关系复杂 | 中等复杂 UI |
| FrameLayout | 层叠覆盖 | 最轻量、最快 | 定位弱 | 容器、遮罩、Fragment |
| TableLayout | 表格行列 | 自动对齐、适合表单 | 不够灵活 | 表单、资料页、整齐列表 |