一、LinearLayout(线性布局)
📸 实际项目示例
项目名称:LinearLayout
运行效果:3 个按钮(按钮 1、按钮 2、按钮 3)在顶部水平并排排列
核心特点
- 子视图按照单一方向线性排列
- 支持 ** 水平(horizontal)和垂直(vertical)** 两种方向
- 子视图依次排列,不会重叠
关键属性详解
1. 方向控制
android:orientation="horizontal" <!-- 水平排列 -->
android:orientation="vertical" <!-- 垂直排列 -->
2. 权重分配(重要)
android:layout_weight="1" <!-- 子视图按权重分配空间 -->
3. 重力控制
android:gravity="center" <!-- 子视图在容器内对齐 -->
android:layout_gravity="center" <!-- 自身在父容器中的对齐 -->
二、RelativeLayout(相对布局)
📸 实际项目示例
项目名称:RelativeLayout运行效果:"按钮 3" 在偏右上区域,"按钮 2" 在 "按钮 3" 的左下方
核心特点
- 子视图通过相对位置关系进行定位
- 可以相对于父容器或其他子视图定位
- 支持复杂的对齐和位置关系
关键属性详解
1. 相对于父容器定位
<!-- 相对父容器中心 -->
android:layout_centerInParent="true"
<!-- 相对父容器边缘 -->
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
2. 相对于其他视图定位
<!-- 相对位置 -->
android:layout_above="@id/button3" <!-- 在某视图上方 -->
android:layout_below="@id/button3" <!-- 在某视图下方 -->
android:layout_toLeftOf="@id/button3" <!-- 在某视图左侧 -->
android:layout_toRightOf="@id/button3" <!-- 在某视图右侧 -->
<!-- 边缘对齐 -->
android:layout_alignTop="@id/button3" <!-- 顶部对齐 -->
android:layout_alignBottom="@id/button3" <!-- 底部对齐 -->
android:layout_alignLeft="@id/button3" <!-- 左侧对齐 -->
android:layout_alignRight="@id/button3" <!-- 右侧对齐 -->
三、FrameLayout(帧布局)
📸 实际项目示例
项目名称:NeonLamp(霓虹灯效果)运行效果:多层嵌套的色块(红→绿→蓝→红→深色),演示了布局的嵌套层级
核心特点
- 最简单的布局类型
- 子视图按顺序堆叠显示
- 所有子视图默认从左上角开始
- 后添加的视图会覆盖在前面的视图之上
关键属性详解
1. 子视图位置控制
android:layout_gravity="center" <!-- 子视图居中 -->
android:layout_gravity="bottom|right" <!-- 子视图在右下角 -->
2. 常用组合
android:layout_gravity="center" <!-- 完全居中 -->
android:layout_gravity="top|center_horizontal" <!-- 顶部居中 -->
四、TableLayout(表格布局)
📸 实际项目示例
项目名称:TableLayout运行效果:5 个按钮按表格排列(第 1 行:按钮 1、按钮 2;第 2 行:按钮 3、按钮 4;第 3 行:按钮 5)
核心特点
- 采用表格形式组织子视图
- 通过 TableRow 定义行
- 类似 HTML 表格的行列结构
关键属性详解
1. TableLayout 属性
<!-- 列伸缩 -->
android:stretchColumns="1" <!-- 第2列伸缩(索引从0开始) -->
android:stretchColumns="*" <!-- 所有列伸缩 -->
<!-- 列收缩 -->
android:shrinkColumns="0" <!-- 第1列收缩 -->
<!-- 列隐藏 -->
android:collapseColumns="2" <!-- 第3列隐藏 -->
2. TableRow 属性
<!-- 重力 -->
android:gravity="center" <!-- 行内内容居中 -->
3. 单元格属性
<!-- 跨列 -->
android:layout_span="2" <!-- 跨2列 -->
<!-- 跨行 -->
android:layout_span="2" <!-- TableRow不支持跨行 -->