Row — ay isang composable function sa Jetpack Compose para sa paglalagay ng mga child element sa isang pahalang na hanay. Hindi tulad ng Column, inaayos ng Row ang mga elemento mula kaliwa pakanan at sinusuportahan ang pag-configure ng pagkakalagay sa pamamagitan ng mga parameter na horizontalArrangement at verticalAlignment. Ayon sa Google Android Documentation, 2025, ang Row ay isa sa tatlong pangunahing lalagyan ng Compose kasama ang Column at Box at ginagamit para sa paglikha ng mga pahalang na istruktura ng interface: mga hilera ng mga pindutan, mga patlang ng pag-input, at mga icon na may teksto.
Mahahalagang Punto
Row — ay isang composable function na naglalagay ng mga child element sa isang pahalang na pagkakasunod-sunod. Sa hierarchy ng mga layout ng Compose, ang Row ay sumasakop sa posisyon ng pangunahing lalagyan kasama ang Column at Box.
Ang Row ay hindi nangangailangan ng pagtukoy ng mga sukat — awtomatiko itong umaangkop sa nilalaman. Ang lapad ng Row ay katumbas ng kabuuan ng mga lapad ng mga child element kasama ang mga puwang, maliban kung nakatakda ang Modifier.fillMaxWidth o isang nakapirming sukat.
Ang mga child element ng Row ay maaaring magkaroon ng sariling mga modifier na nakakaapekto sa kanilang posisyon sa loob ng lalagyan. Halimbawa, ang Modifier.weight ay nagpapahintulot sa mga elemento na kumuha ng proporsyonal na bahagi ng magagamit na espasyo.
Ayon sa Android Developers Blog, 2024, pinoproseso ng Row ang mga child element nang sunud-sunod, kinakalkula ang kanilang mga sukat batay sa mga panuntunan sa pagsukat ng Compose: una ang mga elementong walang weight ay sinusukat, pagkatapos ang natitirang espasyo ay ipinamamahagi sa mga elementong may weight.
Ang pangunahing lagda ng Row ay kinabibilangan ng parameter na modifier, horizontalArrangement at verticalAlignment. Lahat ng child element ay ipinapasa sa huling lambda block na content.
@Composable
fun RowExample() {
Row(
modifier = Modifier.fillMaxWidth().padding(16.dp),
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.CenterVertically
) {
Text(text = "Isa")
Text(text = "Dalawa")
Text(text = "Tatlo")
}
}
Ang parameter na horizontalArrangement ay tumutukoy kung paano ipinamamahagi ang mga child element sa kahabaan ng pahalang na axis sa loob ng Row. Ang mga halagang Start, End, Center, SpaceBetween, SpaceAround at SpaceEvenly mula sa klase ng Arrangement ay magagamit.
Arrangement.Start ay naglalagay ng mga elemento sa simula ng lalagyan, Arrangement.End — sa dulo, at Arrangement.Center — sa gitna. Ang mga halagang ito ay gumagana katulad ng property na justify-content sa CSS Flexbox.
Arrangement.SpaceBetween ay namamahagi ng mga elemento nang pantay-pantay, inilalagay ang unang elemento sa simula, huli sa dulo, at ang natitira na may pantay na mga puwang sa pagitan. Ayon sa Material Design Guidelines, 2025, ang SpaceBetween ay optimal para sa mga panel ng tool at mga hilera ng nabigasyon.
Ang parameter na verticalAlignment ay nag-aayos ng mga elemento nang patayo. Ang Alignment.Top, Alignment.CenterVertically at Alignment.Bottom ay magagamit. Ang property na ito ay kapaki-pakinabang kapag ang mga elemento ng Row ay may iba't ibang taas — halimbawa, isang icon sa tabi ng multi-line na teksto.
| Halaga | Paglalarawan | Gamit |
|---|---|---|
| Start | Mga elementong nakadikit sa simula ng Row | Mga hanay na naka-align sa kaliwa |
| Center | Mga elemento sa gitna ng lalagyan | Pahalang na menu, mga pamagat |
| SpaceBetween | Pantay-pantay na may una sa simula at huli sa dulo | Mga panel ng tool, nabigasyon |
| SpaceEvenly | Pantay na mga puwang sa pagitan ng mga elemento at gilid | Mga hilera ng pindutan, pantay na grid |
| SpaceAround | Pantay na mga puwang sa pagitan ng mga elemento, kalahating puwang sa mga gilid | Mga carousel, gallery ng icon |
Modifier.weight — ay isang modifier na magagamit lamang sa loob ng Row at Column, na namamahagi ng magagamit na espasyo sa pagitan ng mga child element ayon sa tinukoy na halaga. Kung ang isang elemento ay may bigat na 1.0f at ang isa ay 2.0f, ang pangalawang elemento ay kukuha ng dalawang beses na mas maraming espasyo.
Ang mga elementong walang weight ay kumukuha ng espasyo na kailangan para sa kanilang nilalaman. Ang natitirang espasyo ay ipinamamahagi sa mga elementong may weight ayon sa kanilang bigat. Ang pag-uugaling ito ay kahalintulad sa property na flex-grow sa CSS Flexbox.
Ayon sa Android Developer Documentation, 2025, ang weight ay gumagana lamang sa loob ng Row, Column at BoxWithConstraints. Kapag gumagamit ng weight sa Row, lahat ng child element ay sinusukat sa dalawang pass: una ang mga elementong walang weight, pagkatapos ang mga elementong may weight.
@Composable
fun WeightExample() {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Start
) {
Text(
text = "Kaliwa",
modifier = Modifier.weight(1.0f)
)
Text(text = "Kanan")
}
}
Ang unang halimbawa ay nagpapakita ng Row na may icon at teksto — isang tipikal na senaryo para sa listahan ng contact o mga setting. Icon at Text ay nakabalot sa Row na naka-center ang verticalAlignment.
@Composable
fun IconWithText() {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(8.dp)
) {
Icon(
imageVector = Icons.Default.Favorite,
contentDescription = "Favorite"
)
Spacer(modifier = Modifier.width(8.dp))
Text(text = "Idagdag sa mga paborito")
}
}
Ang pangalawang halimbawa ay nagpapakita ng Row na may mga pindutan at pantay na pamamahagi. Ginagarantiyahan ng SpaceEvenly ang pantay na mga puwang sa pagitan ng lahat ng pindutan at mga gilid ng lalagyan.
@Composable
fun ButtonRow() {
Row(
modifier = Modifier.fillMaxWidth().padding(16.dp),
horizontalArrangement = Arrangement.SpaceEvenly
) {
Button(onClick = {}) { Text("Kanselahin") }
Button(onClick = {}) { Text("I-save") }
}
}
Ang pangatlong halimbawa — Row sa loob ng Card para sa pagpapakita ng rating. Ang nested Row na may Modifier.weight ay nagpapahintulot sa bituin ng rating at numerikong halaga na kumuha ng nakapirming espasyo.
@Composable
fun RatingRow(rating: Float) {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = "Rating:",
modifier = Modifier.weight(1.0f)
)
Text(text = "$rating / 5.0")
}
}
Row ay nangangailangan ng kontrol sa lapad sa adaptive layout. Kung ang nilalaman ng Row ay lumampas sa magagamit na lapad ng screen, ang mga elemento ay maaaring lumabas sa mga hangganan ng lalagyan. Upang maiwasan ito, gamitin ang Modifier.horizontalScroll o lumipat sa Column.
Kapag pinagsasama ang Row sa Modifier.weight, mahalagang itakda ang fillMaxWidth para sa parent na Row — kung hindi, ang weight ay mamamahagi ng hindi umiiral na espasyo. Ayon sa Material Design Guidelines, 2025, ang Row na may weight na walang fillMaxWidth ay itinuturing na hindi tamang konpigurasyon.
Para sa mga adaptive interface, inirerekomenda na pagsamahin ang Row sa Box o gamitin ang Arrangement.SpaceBetween para sa awtomatikong pamamahagi ng mga elemento sa iba't ibang laki ng screen. Ito ay nagbibigay ng flexibility nang walang media queries.
Mga Madalas Itanong
Row ay naglalagay ng mga elemento nang pahalang (mula kaliwa pakanan), habang ang Column — nang patayo (mula itaas pababa). Pinapalitan ng Row ang LinearLayout na may pahalang na oryentasyon mula sa lumang View approach, at Column — ang patayong LinearLayout.
Idagdag ang modifier na Modifier.horizontalScroll sa Row. Para sa malalaking listahan na may lazy loading, gamitin ang LazyRow — ito ay nagre-render lamang ng mga nakikitang elemento at muling ginagamit ang mga ito habang nag-i-scroll.
Oo, ang Row ay maaaring ilagay sa loob ng isa pang Row, Column o Box. Kapag nag-nenest, tandaan na ang panloob na Row ay tumatanggap ng lapad mula sa parent na lalagyan, at kung kinakailangan, itakda ang fillMaxWidth para sa bawat antas.
Modifier.weight ay namamahagi ng natitirang espasyo sa Row sa pagitan ng mga child element ayon sa tinukoy na bigat. Ang elemento na may bigat na 2.0f ay magiging dalawang beses na mas malawak kaysa sa elemento na may bigat na 1.0f. Ang weight ay gumagana lamang sa loob ng Row at Column.
Gamitin ang parameter na verticalAlignment = Alignment.CenterVertically kapag gumagawa ng Row. Ito ay mag-aalign ng lahat ng child element sa kahabaan ng vertical axis anuman ang kanilang taas.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din