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") } }
|