Android Compose 学习笔记的第一篇,创建第一个 Android 应用。通过修改背景颜色和添加内边距,演示了 Compose 中 Surface 和 Modifier 的使用方法。最后,给出了完整的解决方案代码。
MainActivity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { AndroidComposeExpTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { Greeting("Android") } } } } }
|
onCreate()函数中的 setContent()函数用于通过可组合函数定义布局。所有标有 @Composable注释的函数都可以从 setContent()函数或其他可组合函数调用。
1.在函数前添加 @Composable注释。 2.@Composable函数名称要大写。 3.@Composable函数不能返回任何内容。
更改背景颜色
file_67.jpg1 2 3 4 5 6 7 8 9
| @Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Surface(color = Color.Cyan) { Text( text = "Hi, my name is $name!", modifier = modifier ) } }
|
file_111.jpg添加填充
Modifier用于增强或修饰可组合项。
1 2 3 4 5 6 7 8 9
| @Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Surface(color = Color.Cyan) { Text( text = "Hi, my name is $name!", modifier = modifier.padding(24.dp) ) } }
|
file_109.jpg解决方案代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| package com.tofu.greetingcard
import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.tofu.greetingcard.ui.theme.AndroidComposeExpTheme
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { AndroidComposeExpTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { Greeting("Android") } } } } }
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Surface(color = Color.Cyan) { Text( text = "Hi, my name is $name!", modifier = modifier.padding(24.dp) ) } }
@Preview(showBackground = true) @Composable fun GreetingPreview() { AndroidComposeExpTheme { Greeting("tofu") } }
|