Compose 中 Column、Row、Box 是最核心的三大布局组件,就像积木一样搭建界面。 配合 Modifier 可以控制大小、边距、背景、点击等一切样式。让我们用最直观的方式学会它们!
| 组件 | 方向 | 类比 (传统View) | 典型用途 |
|---|---|---|---|
| Column | 垂直排列 (从上到下) | LinearLayout (vertical) | 列表、表单、纵向信息流 |
| Row | 水平排列 (从左到右) | LinearLayout (horizontal) | 按钮组、标签栏、头像行 |
| Box | 层叠 (子组件重叠) | FrameLayout | 徽章、遮罩、绝对定位 |
Modifier.padding(16.dp).background(Color.Yellow)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)
}
}
@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))
}
}
@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.padding(16.dp).background(Color.Cyan) → 先留白再涂背景。Modifier.background(Color.Cyan).padding(16.dp) → 先涂背景再留白(背景会铺满原始区域)。
| 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) |
🎓 本节课总结