再加第二個按扭,按一下就顯示“Hello world !”
package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.example.myapplication.ui.theme.MyApplicationTheme
// 將 enum class 移到 @Composable 函數外部
enum class DisplayText { NONE, ANDROID, WORLD }
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApplicationTheme {
Greeting()
}
}
}
}
@Composable
fun Greeting(modifier: Modifier = Modifier) {
// 使用 enum 狀態
var displayedText by remember { mutableStateOf(DisplayText.NONE) }
Column(
modifier = modifier.fillMaxSize().padding(16.dp),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(
onClick = {
displayedText = if (displayedText == DisplayText.ANDROID) DisplayText.NONE
else DisplayText.ANDROID
},
modifier = Modifier.padding(bottom = 8.dp)
) {
Text(text = if (displayedText == DisplayText.ANDROID) "Hide Android"
else "Show Android")
}
Button(
onClick = {
displayedText = if (displayedText == DisplayText.WORLD) DisplayText.NONE
else DisplayText.WORLD
},
modifier = Modifier.padding(bottom = 8.dp)
) {
Text(text = if (displayedText == DisplayText.WORLD) "Hide World"
else "Show World")
}
when (displayedText) {
DisplayText.ANDROID -> Text("Hello Android!", Modifier.padding(top = 16.dp))
DisplayText.WORLD -> Text("Hello World!", Modifier.padding(top = 16.dp))
DisplayText.NONE -> {} // 不顯示任何文本
}
}
}
運行效果:
初始畫面有兩個按鈕:
點擊按鈕後:
再次點擊按鈕 → 隱藏對應的文本。
////////////// 程式說明 ////////////////////
總結:
1 fun Greeting(modifier: Modifier = Modifier) 是一個可組合函數,用於定義一個 UI 元件。
2 modifier 參數允許外部呼叫者靈活調整 UI 的外觀。
3 內部使用 Column 佈局來排列按鈕和文本。
4 使用 remember 和 mutableStateOf 來管理狀態,實現動態 UI 更新。