Android 布局:线性 / 相对 / 表格 / 帧

5 阅读2分钟

一、LinearLayout(线性布局)

核心特性

子控件沿水平(horizontal)垂直(vertical)方向线性排列,是最基础、最直观的布局。 支持 layout_weight 按比例分配剩余空间,适配不同屏幕。

关键属性

android:orientation:horizontal(水平)/ vertical(垂直) android:layout_weight:权重分配空间 *android:gravity:子控件在容器内的对齐方式

7217cbfcb05b1f1d124113786e65310b.png

界面呈现水平排列的按钮组,符合线性布局 “单行 / 单列整齐排列” 的典型特征,适合表单、按钮栏、列表项等简单线性结构。

适用场景

简单的按钮、输入框等线性排列界面 列表项、底部导航栏等规则线性结构

二、RelativeLayout(相对布局)

核心特性

子控件位置相对父容器或兄弟控件定位,不依赖固定线性方向,灵活性高。 通过相对属性(如 layout_alignParentTop、layout_toRightOf)控制位置。

关键属性

父容器定位:layout_alignParentTop、layout_centerInParent 等 兄弟控件定位:layout_toLeftOf、layout_below 等

14346d4b955b30a1b15a2a0e485bc1cb.png 按钮分散在界面不同位置(顶部、中部、底部),完全依赖相对定位实现自由布局,是相对布局的典型应用。

适用场景

控件位置不固定、需要自由排列的界面 表单、卡片式布局等需要灵活定位的场景

三、TableLayout(表格布局)

核心特性

表格形式组织子控件,由 TableRow 定义行,每行包含多个单元格(子控件)。 列宽由该行最宽单元格自动决定,类似 HTML 表格。 本质是 LinearLayout 的扩展,默认垂直排列行。

关键属性

android:stretchColumns:指定可拉伸的列,适配屏幕 android:shrinkColumns:指定可收缩的列 子控件通过 android:layout_span 合并单元格

b74b5301a43a0d54f7155d95d8057c3e.png

按钮按多行多列整齐排列,符合表格布局 “行列规整” 的特征,适合数据展示、按钮矩阵等结构化布局。

适用场景

按钮矩阵、数据表格、表单等行列结构清晰的界面 需要整齐排列的网格状控件

四、FrameLayout(帧布局)

核心特性

所有子控件层叠排列在布局的左上角,后添加的控件覆盖在先添加的控件之上。 无定位属性,仅支持gravity控制整体对齐,是最简洁的布局。

23d783105bfe0fbbd6e3ba1df6487e85.png

界面呈现多层颜色方块层叠效果,完全符合帧布局 “层叠覆盖” 的核心特征,是帧布局的经典应用。

关键属性

android:foreground:设置前景 drawable android:foregroundGravity:前景对齐方式

适用场景

图层叠加、动画容器、单控件展示(如图片、视频) 作为 Fragment 容器、自定义 View 根布局

快速选择指南

  1. 控件整齐线性排列 → 用 LinearLayout
  2. 控件自由分散排列 → 用 RelativeLayout
  3. 控件行列规整排列 → 用 TableLayout
  4. 控件层叠覆盖展示 → 用 FrameLayout