一、LinearLayout(线性布局)
核心特性
子控件沿水平(horizontal)或垂直(vertical)方向线性排列,是最基础、最直观的布局。 支持 layout_weight 按比例分配剩余空间,适配不同屏幕。
关键属性
android:orientation:horizontal(水平)/ vertical(垂直) android:layout_weight:权重分配空间 *android:gravity:子控件在容器内的对齐方式
界面呈现水平排列的按钮组,符合线性布局 “单行 / 单列整齐排列” 的典型特征,适合表单、按钮栏、列表项等简单线性结构。
适用场景
简单的按钮、输入框等线性排列界面 列表项、底部导航栏等规则线性结构
二、RelativeLayout(相对布局)
核心特性
子控件位置相对父容器或兄弟控件定位,不依赖固定线性方向,灵活性高。 通过相对属性(如 layout_alignParentTop、layout_toRightOf)控制位置。
关键属性
父容器定位:layout_alignParentTop、layout_centerInParent 等 兄弟控件定位:layout_toLeftOf、layout_below 等
按钮分散在界面不同位置(顶部、中部、底部),完全依赖相对定位实现自由布局,是相对布局的典型应用。
适用场景
控件位置不固定、需要自由排列的界面 表单、卡片式布局等需要灵活定位的场景
三、TableLayout(表格布局)
核心特性
以表格形式组织子控件,由 TableRow 定义行,每行包含多个单元格(子控件)。 列宽由该行最宽单元格自动决定,类似 HTML 表格。 本质是 LinearLayout 的扩展,默认垂直排列行。
关键属性
android:stretchColumns:指定可拉伸的列,适配屏幕 android:shrinkColumns:指定可收缩的列 子控件通过 android:layout_span 合并单元格
按钮按多行多列整齐排列,符合表格布局 “行列规整” 的特征,适合数据展示、按钮矩阵等结构化布局。
适用场景
按钮矩阵、数据表格、表单等行列结构清晰的界面 需要整齐排列的网格状控件
四、FrameLayout(帧布局)
核心特性
所有子控件层叠排列在布局的左上角,后添加的控件覆盖在先添加的控件之上。 无定位属性,仅支持gravity控制整体对齐,是最简洁的布局。
界面呈现多层颜色方块层叠效果,完全符合帧布局 “层叠覆盖” 的核心特征,是帧布局的经典应用。
关键属性
android:foreground:设置前景 drawable android:foregroundGravity:前景对齐方式
适用场景
图层叠加、动画容器、单控件展示(如图片、视频) 作为 Fragment 容器、自定义 View 根布局
快速选择指南
- 控件整齐线性排列 → 用 LinearLayout
- 控件自由分散排列 → 用 RelativeLayout
- 控件行列规整排列 → 用 TableLayout
- 控件层叠覆盖展示 → 用 FrameLayout