ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Column က child composable တွေကို vertical (အပေါ်-အောက်) စီပေးပါတယ် — Row ကတော့ horizontal (ဘယ်-ညာ) စီပေးပါတယ်။ Box ကတော့ child composable တွေကို overlap (တစ်ခုပေါ်တစ်ခု ထပ်) ဖြစ်အောင် placement လုပ်ပေးပါတယ် (ဥပမာ - image ပေါ်မှာ text overlay)။ Modifier က composable တစ်ခုချင်းစီရဲ့ appearance/behavior (padding, size, background color, clickable) ကို chain (`.padding(16.dp).background(Color.Blue)`) ဖြင့် customize လုပ်ဖို့ toolkit ပါ.
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Login screen တစ်ခု ဒီဇိုင်းရေးရင် — `Column` ထဲမှာ logo (Image), email TextField, password TextField, login Button ကို vertical စီထားနိုင်ပါတယ် — `Modifier.padding(16.dp)` ကို Column ပေါ် ထည့်ရင် screen edge နဲ့ content ကြား space ရအောင် ထားလို့ရပါတယ်.
အတူတူ ကြည့်မယ်
@Composable
fun LoginScreen() {
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text("Welcome Back", fontSize = 24.sp)
Spacer(modifier = Modifier.height(16.dp))
Row {
Icon(Icons.Default.Email, contentDescription = null)
Text("email@example.com")
}
}
}Emulator ပေါ်မှာ 'Welcome Back' text အောက်မှာ email icon + text ကို row အနေနဲ့ တွေ့ရမည်။၅ မိနစ် စမ်းကြည့်
`LoginScreen` ကို ကိုယ်တိုင် expand လုပ်ကြည့်ပါ — email/password TextField ၂ ခုနဲ့ Login Button ကို Column ထဲ ထပ်ထည့်ပြီး emulator ပေါ် run ကြည့်ပါ။
သတိလေးတစ်ချက်
`Modifier.fillMaxSize()` ကို nested composable တွေမှာ overuse ရင် layout ရဲ့ actual size ကို ခန့်မှန်းရခက်ခဲသွားနိုင်ပါတယ် — root level မှာသာ သုံးပြီး child တွေမှာ specific size/weight သုံးသင့်ပါတယ်။