Android 布局资源四种常用类型详解

0 阅读4分钟

Android 布局资源位于 res/layout/ 目录下,用于定义界面的结构、控件位置与层级关系。下面详细介绍开发中最核心、最常用的四种布局

  1. LinearLayout(线性布局)
  2. RelativeLayout(相对布局)
  3. FrameLayout(帧布局)
  4. ConstraintLayout(约束布局)

一、LinearLayout(线性布局)

3a18be1d5c0b6b57ba50d66dd9ffa34b.png

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(相对布局)

7e87e1849671d0091d1a1ad80cd30e97.png

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_toRightOf
  • layout_alignTop / layout_alignBottom:对齐某控件边缘

3. 优点

  • 定位灵活,适合复杂界面
  • 减少布局嵌套层级

4. 缺点

  • 关系复杂时容易出现依赖混乱
  • 性能略低于 LinearLayout
  • 已逐渐被 ConstraintLayout 替代

5. 适用场景

  • 个人中心、详情页、不规则定位界面
  • 中等复杂度 UI

三、FrameLayout(帧布局)

83aa5ced1782800c03255be849ac7cb8.png

1. 基本概念

FrameLayout 是最简单、最轻量的布局,所有子控件默认叠加在左上角,后添加的控件会覆盖在先添加的控件之上。

2. 核心属性

只有一个关键对齐属性:

  • android:layout_gravity:控制子控件在帧布局中的位置(center、top、bottom 等)

3. 优点

  • 渲染速度极快
  • 结构最简单
  • 非常适合作为容器

4. 缺点

  • 几乎没有定位能力,只能叠加或简单对齐
  • 不适合复杂界面

5. 适用场景

  • Fragment 容器
  • 图片 + 文字遮罩层
  • 加载动画、悬浮控件
  • 卡片层叠效果

四、TableLayout(表格布局)

ee86ec4e619f888492d12678e50e1663.png

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表格行列自动对齐、适合表单不够灵活表单、资料页、整齐列表