📐 布局基础

Column · Row · Box Modifier 入门
🎯 第4课 🧩 声明式UI · 从零开始 ✨ 中小学生色系 · 轻松掌握

Compose 中 Column、Row、Box 是最核心的三大布局组件,就像积木一样搭建界面。 配合 Modifier 可以控制大小、边距、背景、点击等一切样式。让我们用最直观的方式学会它们!

🧱 三大布局组件

组件方向类比 (传统View)典型用途
Column垂直排列 (从上到下)LinearLayout (vertical)列表、表单、纵向信息流
Row水平排列 (从左到右)LinearLayout (horizontal)按钮组、标签栏、头像行
Box层叠 (子组件重叠)FrameLayout徽章、遮罩、绝对定位

✨ Modifier 是什么?

🧩 布局与 Modifier 协作图

Column 垂直排列 子组件垂直排列 Row 水平排列 子组件水平排列 Box 层叠 子组件重叠 ⬆️ Modifier 应用于每个组件 (padding, size, background, clickable...)

📟 基础代码示例

🔹 Column + Modifier

@Composable
fun MyColumn() {
    Column(
        modifier = Modifier
            .padding(16.dp)
            .background(Color(0xFFF7D9AA))
            .border(2.dp, Color(0xFF3F5B7A), shape = RoundedCornerShape(12.dp))
            .padding(12.dp)
    ) {
        Text("📘 语文", fontSize = 20.sp)
        Text("📗 数学", fontSize = 20.sp)
        Text("📕 英语", fontSize = 20.sp)
    }
}

🔹 Row + Modifier 权重

@Composable
fun MyRow() {
    Row(
        modifier = Modifier
            .fillMaxWidth()
            .padding(horizontal = 12.dp),
        horizontalArrangement = Arrangement.SpaceEvenly
    ) {
        Text("⭐ 点赞", modifier = Modifier.weight(1f))
        Text("💬 评论", modifier = Modifier.weight(1f))
        Text("🔗 分享", modifier = Modifier.weight(1f))
    }
}

🔹 Box 层叠 + Modifier 对齐

@Composable
fun MyBox() {
    Box(
        modifier = Modifier
            .size(120.dp)
            .background(Color(0xFFB7D7E8), shape = CircleShape),
        contentAlignment = Alignment.Center
    ) {
        Text("🎯", fontSize = 40.sp)
        // 右上角小徽章
        Box(
            modifier = Modifier
                .align(Alignment.TopEnd)
                .size(28.dp)
                .background(Color.Red, shape = CircleShape),
            contentAlignment = Alignment.Center
        ) {
            Text("3", color = Color.White, fontSize = 14.sp)
        }
    }
}
🧑‍🏫 老师小提醒: Modifier 顺序很重要!
Modifier.padding(16.dp).background(Color.Cyan) → 先留白再涂背景。
Modifier.background(Color.Cyan).padding(16.dp) → 先涂背景再留白(背景会铺满原始区域)。

📋 常用 Modifier 速查

Modifier作用示例
padding内边距.padding(12.dp)
background背景颜色/形状.background(Color.Yellow, shape = CircleShape)
size / width / height尺寸.size(48.dp)
border边框.border(2.dp, Color.Gray, RoundedCornerShape(8.dp))
clickable点击交互.clickable { /* 点击事件 */ }
fillMaxWidth / fillMaxHeight填充最大宽/高.fillMaxWidth(0.8f)
weight权重 (仅 Row/Column 内).weight(1f)

✏️ 动手试一试

🎓 本节课总结

  • Column 垂直排列,Row 水平排列,Box 层叠。
  • Modifier 是 Compose 的灵魂,链式调用控制样式与行为。
  • 先学这三个布局 + Modifier,就能组合出 90% 的界面。
  • 多写多练,感受 Modifier 顺序带来的变化!