布局资源(layout)四种最常用类型详解
布局资源用于定义界面结构与控件排列规则,文件位于 res/layout/*.xml。
- LinearLayout(线性布局)
特点
控件按水平或垂直方向依次排列,像排队一样
最基础、最常用,性能好
支持权重(layout_weight)实现按比例分配空间
关键属性
android:orientation="vertical|horizontal":排列方向
android:layout_weight:权重,用于平分/比例分配剩余空间
gravity:内部控件对齐方式
layout_gravity:自身在父布局中的对齐
适用场景
简单单列/单行排列
表单、列表项、按钮栏
需要按比例分配宽度/高度 2. RelativeLayout(相对布局)
特点
控件相对于父布局或其他兄弟控件定位
灵活度高,可减少布局嵌套
不用依赖顺序,通过 ID 引用实现位置关系
关键属性
相对于父布局:
layout_alignParentTop
layout_centerInParent
layout_alignParentEnd
相对于兄弟控件:
layout_toRightOf
layout_below
layout_alignTop
适用场景
控件位置不规则、需要对齐边缘
复杂 UI 但不想多层嵌套
头像+文字、标签定位等 3. ConstraintLayout(约束布局)
特点
Google 官方推荐首选布局
功能最强,可完全替代 LinearLayout + RelativeLayout
扁平化结构,无嵌套也能实现复杂界面,性能最优
可视化编辑器支持最好
关键约束
左右约束:layout_constraintStart_toStartOf
上下约束:layout_constraintTop_toBottomOf
居中:两边同时约束到父布局
比例:layout_constraintDimensionRatio
链(Chain):批量控制一组控件排列
适用场景
绝大多数现代 Android 界面
复杂响应式布局
多屏幕适配、平板/折叠屏 4. FrameLayout(帧布局)
特点
所有控件叠在同一区域,后添加的覆盖先添加的
结构最简单,性能最高
常用于容器,只显示一个子 View
关键属性
android:gravity:控制子控件在帧内的位置
无复杂排列规则,仅层级叠加
适用场景
碎片(Fragment)容器
ViewPager 页面
加载动画、遮罩层
相机预览、视频播放层
三、四种布局简单对比
布局 排列方式 性能 复杂度 推荐度
LinearLayout 线性依次 高 低 常用
RelativeLayout 相对定位 中 中 一般
ConstraintLayout 约束定位 高 高 强烈推荐
FrameLayout 层叠 极高 极低 专用场景