1. LinearLayout(线性布局)
基本概念
按照一个方向排列子控件
<LinearLayout
android:orientation="vertical">
<TextView />
<Button />
</LinearLayout>
核心属性详解
① orientation(方向)
vertical / horizontal
② layout_weight(权重 重点)
android:layout_weight="1"
用于按比例分配剩余空间
优缺点
优点:
- 简单直观
- 易于实现等分布局
缺点:
- 嵌套多 → 性能差
2. RelativeLayout(相对布局)
核心思想
子控件通过“相对位置”排列
示例
<RelativeLayout>
<Button
android:id="@+id/btn1"/>
<TextView
android:layout_below="@id/btn1"/>
</RelativeLayout>
优缺点
优点:
- 比 LinearLayout 更灵活
- 减少嵌套
缺点:
- 规则复杂
- 多控件维护困难
3. ConstraintLayout(约束布局)
Google 官方推荐,现代开发必备
核心思想
通过“约束关系”确定位置,而不是嵌套
示例
<Button
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
核心概念详解
① Constraint(约束)
每个控件必须:
- 至少一个水平约束
- 至少一个垂直约束
② Bias(偏移)
app:layout_constraintHorizontal_bias="0.3"
控制位置偏移(0~1)
③ Chain(链)
多个控件均分空间
app:layout_constraintHorizontal_chainStyle="spread"
④ Guideline(参考线)
<androidx.constraintlayout.widget.Guideline
app:layout_constraintGuide_percent="0.3"/>
⑤ Match Constraint(0dp)
android:layout_width="0dp"
表示“填充约束范围”
优缺点
优点:
- 减少嵌套(性能更好)
- 灵活性极高
- 支持复杂 UI
缺点:
- 学习成本高
4. FrameLayout(帧布局)
核心特点
子控件“叠加显示”
示例
<FrameLayout>
<ImageView />
<TextView />
</FrameLayout>
TextView 会覆盖 ImageView
常见用途
- Fragment 容器
- 视频播放界面
- 悬浮按钮
优缺点
优点:
- 简单
- 适合叠加 UI
缺点:
- 不适合复杂布局