Compose 入门
本教程共 100 篇 · 第 43 篇 · 更新于 2026-07-28 · 约 7 分钟阅读
43. Compose 入门
本节目标:学会配置 Compose 项目,写出第一个可组合界面,掌握 Text 显示文本和 Modifier 调整样式的基本用法,能用 @Preview 预览界面。
项目配置
Android Studio(Quail 2 代)创建新项目时,选择「Empty Activity」模板,它会自动配好 Compose。如果你手动配,需要这几步。
模块级 build.gradle.kts
android {
buildFeatures {
compose = true // 开启 Compose
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.15"
}
}
dependencies {
val composeBom = platform("androidx.compose:compose-bom:2024.12.01")
implementation(composeBom)
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
implementation("androidx.activity:activity-compose:1.9.3")
debugImplementation("androidx.compose.ui:ui-tooling")
}
Note
- Compose BOM(Bill of Materials)统一管理所有 Compose 库的版本,你不用逐个写版本号。用 BOM 后,依赖项里不写版本号即可。
第一个 Compose 界面
在 Activity 里用 setContent 设置界面,替代传统的 setContentView:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
// 这里写 Compose 界面
Text("你好,Compose!")
}
}
}
setContent 接收一个 @Composable lambda,里面就是你的界面。运行项目,屏幕上会显示「你好,Compose!」。
Text 显示文本
Text 是最基本的文本组件:
@Composable
fun TextExample() {
Text(
text = "这是一段文字",
color = Color.Blue,
fontSize = 20.sp,
fontWeight = FontWeight.Bold
)
}
常用参数:
| 参数 | 作用 | 示例 |
|---|---|---|
text | 文本内容 | "Hello" |
color | 文字颜色 | Color.Red |
fontSize | 字号 | 16.sp |
fontWeight | 粗细 | FontWeight.Bold |
maxLines | 最大行数 | 1 |
overflow | 溢出处理 | TextOverflow.Ellipsis |
Tip
sp是字号单位(scale-independent pixels),会随系统字体大小缩放,适合文字。dp是尺寸单位,不随字体缩放,适合间距、尺寸。
Modifier 修饰符
Modifier 是 Compose 里调整组件样式和行为的核心工具。它像一条链,把各种修饰操作串起来:
@Composable
fun ModifierExample() {
Text(
text = "带样式的文字",
modifier = Modifier
.background(Color.Yellow)
.padding(16.dp)
.fillMaxWidth()
)
}
常用 Modifier 方法:
| 方法 | 作用 |
|---|---|
padding() | 内边距 |
background() | 背景 |
fillMaxWidth() | 填满宽度 |
fillMaxSize() | 填满整个空间 |
size() | 指定尺寸 |
clickable() | 点击事件 |
border() | 边框 |
clip() | 圆角裁剪 |
Modifier 顺序很重要
Modifier 是按顺序应用的,顺序不同效果不同:
// 先 padding 再 background:背景只包住文字外的间距
Modifier.padding(16.dp).background(Color.Red)
// 先 background 再 padding:背景包括间距区域
Modifier.background(Color.Red).padding(16.dp)
Warning
- 把 Modifier 当作从外到内的洋葱。链上前面的修饰影响外层,后面的影响内层。顺序写错是 Compose 新手最常遇到的问题之一。
Modifier 作为参数传递
自定义可组合函数时,通常第一个参数放 Modifier,让调用方能调整样式:
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "你好,$name",
modifier = modifier.padding(8.dp)
)
}
// 调用方可以追加自己的修饰
Greeting(
name = "小明",
modifier = Modifier.fillMaxWidth()
)
Tip
- 习惯上 Modifier 参数放在第一个位置,并给默认值
Modifier。这是官方推荐的最佳实践。
@Preview 预览
@Preview 注解让你不运行应用就能在 Android Studio 里看到界面效果:
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
Greeting("Android")
}
在代码编辑器右上角或分屏视图里会显示预览。改了代码,预览自动刷新。
Preview 常用参数:
| 参数 | 作用 |
|---|---|
showBackground | 显示白色背景 |
showSystemUi | 显示状态栏和导航栏 |
widthDp / heightDp | 预览尺寸 |
name | 预览名称 |
@Preview(name = "浅色模式")
@Preview(name = "深色模式", uiMode = UI_MODE_NIGHT_YES)
@Composable
fun GreetingPreview() {
MyTheme {
Greeting("Android")
}
}
Note
- Preview 函数不能有参数,必须是
@Composable且返回Unit。它只用于开发预览,不参与正式编译产物。可以写多个 Preview 函数预览不同状态。
完整的第一个例子
把前面学的组合起来,写一个带样式的问候界面:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
GreetingScreen()
}
}
}
@Composable
fun GreetingScreen() {
Column(
modifier = Modifier
.fillMaxSize()
.background(Color(0xFFF5F5F5))
.padding(24.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(
text = "欢迎来到 Compose",
fontSize = 28.sp,
fontWeight = FontWeight.Bold
)
Spacer(modifier = Modifier.height(16.dp))
Text(
text = "这是你的第一个 Compose 界面",
color = Color.Gray
)
}
}
@Preview(showBackground = true)
@Composable
fun GreetingScreenPreview() {
GreetingScreen()
}
Column 是垂直排列的布局容器(第 44 章详细讲),Spacer 是占位空白。
小结
用 setContent 替代 setContentView 进入 Compose 世界。Text 显示文字,Modifier 链式调整样式,@Preview 实时预览。记住 Modifier 顺序敏感,自定义组件把 Modifier 放第一个参数。下一节我们深入学习布局。