运行Android布局资源的四种常用类型

19 阅读4分钟

以下我将依次运行下面四个项目文件,来介绍布局资源的四种常用类型

2026-03-25_135821.png

一、LinearLayout(线性布局)

1、运行LinearLayout项目 2026-03-25_135606.png

2026-03-25_140129.png

2、LinearLayout特点

核心思想:
将所有子视图按照单一方向(水平或垂直)顺序排列,形成线性结构。

特点:
排列方向固定,不能同时存在水平和垂直混合排列。
支持使用 layout_weight 属性按比例分配剩余空间,实现灵活的等分或自适应效果。
布局简单直观,适合构建结构清晰的界面。

常用属性:
android:orientation:设置排列方向,取值为 "horizontal"(水平)或 "vertical"(垂直)。
android:layout_weight:分配剩余空间的权重值,通常与 layout_width 或 layout_height 设为 0dp 配合使用。
android:gravity:控制所有子视图在布局内的对齐方式(如 center、bottom、right)。
android:layout_gravity:控制单个子视图在父布局中的对齐方式。

适用场景: 简单的表单(登录/注册界面)。
底部按钮栏或顶部工具栏。
列表项的单一方向排列(配合权重实现自适应)。

二、FrameLayout(帧布局)

1、运行NeonLamp,也就是FrameLayout项目

2026-03-25_142225.png

2026-03-25_142506.png

2、FrameLayout特点

核心思想:
所有子视图默认堆叠在布局的左上角,后添加的视图会覆盖在前者之上,形成“帧”或“层”的效果。

特点:
结构最简单,没有排列方向概念。
通常只包含一个子视图(作为容器),或用于实现覆盖效果。
常用于作为 Fragment 的容器,或实现加载进度条、悬浮按钮等层叠效果。

常用属性:
android:foreground:设置前景图像,始终绘制在所有子视图之上。
android:foregroundGravity:定义前景图像的位置。
android:measureAllChildren:控制是否测量所有子视图(较少使用)。
子视图可通过 layout_gravity 设置其在 FrameLayout 中的对齐方式(如 center、bottom)。

适用场景:
作为 Fragment 的容器(如单 Activity 多 Fragment 架构)。
实现覆盖层(如加载提示覆盖主内容)。
用于展示单个视图(如显示一张图片)。

三、RelativeLayout(相对布局)

1、运行RelativeLayout项目 2026-03-25_152949.png

2026-03-25_153158.png

2、RelativeLayout特点

核心思想:
通过子视图与父容器或其他子视图之间的相对位置关系来定义界面,无需嵌套多层级布局。

特点:
视图位置可以基于父容器(如 layout_alignParentTop)或兄弟视图(如 layout_below)指定。
可以减少布局嵌套层级,但若约束关系复杂,可能增加布局计算开销。
适合构建相对位置明确的复杂界面。

常用属性:
相对父容器:layout_alignParentTop、layout_alignParentBottom、layout_centerInParent、layout_centerHorizontal 等。
相对其他视图:layout_above、layout_below、layout_toLeftOf、layout_toRightOf、layout_alignTop、layout_alignBottom 等。
边距属性:layout_margin 系列,用于设置视图与周围元素的间距。

适用场景:
需要根据某个视图动态定位其他元素的界面(如登录界面中“注册”按钮位于“登录”按钮右侧)。
当布局层级不宜过深时,可替代嵌套的 LinearLayout。

四、TableLayout(表格布局)

1、运行TableLayout项目

2026-03-25_154923.png

2026-03-25_155048.png

2、TableLayout特点

核心思想:
以表格形式组织视图,通过  定义每一行,系统自动对齐列宽,实现规则的数据展示。

特点:
不需要手动指定列宽,系统根据所有行的内容自动计算每列的最大宽度。
支持列的拉伸(stretchColumns)和收缩(shrinkColumns),也可以隐藏某列(collapseColumns)。
单元格可以合并(使用 layout_span 属性)。
适用于结构规整的数据表格。

常用属性: android:stretchColumns:指定需要拉伸的列索引(从0开始),多个列用逗号分隔。
android:shrinkColumns:指定需要收缩的列索引。
android:collapseColumns:指定需要隐藏的列索引。\  中的子视图可使用 android:layout_column 指定所在列,android:layout_span 指定合并的列数。

适用场景:
设置页面(如个人资料编辑,一行对应一个字段)。
数据统计或展示表格。
计算器界面(数字按钮排布)。

五、布局资源的四种常用类型比较

四种布局各有侧重:LinearLayout 排列方向单一,通过权重可实现自适应,但复杂界面易多层嵌套影响性能;RelativeLayout 通过相对定位减少层级,适合元素间有明确位置关系的界面,但约束过多时计算开销大且代码可读性降低;FrameLayout 结构最简,子视图堆叠覆盖,性能高,适合作为 Fragment 容器或实现覆盖层,但无法处理复杂排列;TableLayout 自动对齐列宽,适合规则表格数据,但结构固定,对不规则界面缺乏灵活性。

总体而言,简单线性界面首选 LinearLayout,需相对定位时用 RelativeLayout,单视图容器用 FrameLayout,规则表格用 TableLayout。