Row sa Jetpack Compose: ano ito, mga katangian ng composable at kung paano ito gumagana

May-akda: IT Sectr Nai-publish: 2026-06-28 Oras ng pagbabasa: 10 min

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 — pahalang na lalagyan ng Jetpack Compose na naglalagay ng mga child element sa isang linya mula kaliwa pakanan.
  • horizontalArrangement namamahala sa pamamahagi ng mga elemento nang pahalang: pantay-pantay, may mga puwang, o sa dulo ng lalagyan.
  • verticalAlignment nag-aayos ng mga elemento nang patayo kaugnay sa lalagyan: itaas na gilid, gitna, o ibabang gilid.
  • Modifier.weight nagpapahintulot sa pamamahagi ng magagamit na espasyo sa pagitan ng mga elemento ng Row ayon sa tinukoy na bigat.
  • Row ay epektibo para sa paglikha ng mga hilera ng mga pindutan, listahan ng mga icon, mga patlang ng pag-input, at pahalang na mga panel ng tool sa mga mobile interface.

Ano ang Row sa Jetpack Compose

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.

Sintaks at pangunahing lagda ng Row

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.

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

Mga Katangian ng Row: horizontalArrangement at verticalAlignment

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.

Talaan ng mga halaga ng Arrangement

HalagaPaglalarawanGamit
StartMga elementong nakadikit sa simula ng RowMga hanay na naka-align sa kaliwa
CenterMga elemento sa gitna ng lalagyanPahalang na menu, mga pamagat
SpaceBetweenPantay-pantay na may una sa simula at huli sa duloMga panel ng tool, nabigasyon
SpaceEvenlyPantay na mga puwang sa pagitan ng mga elemento at gilidMga hilera ng pindutan, pantay na grid
SpaceAroundPantay na mga puwang sa pagitan ng mga elemento, kalahating puwang sa mga gilidMga carousel, gallery ng icon

Pamamahagi ng espasyo gamit ang Modifier.weight

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.

kotlin
@Composable
fun WeightExample() {
    Row(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.Start
    ) {
        Text(
            text = "Kaliwa",
            modifier = Modifier.weight(1.0f)
        )
        Text(text = "Kanan")
    }
}

Mga halimbawa ng code gamit ang Row

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.

kotlin
@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.

kotlin
@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.

kotlin
@Composable
fun RatingRow(rating: Float) {
    Row(
        verticalAlignment = Alignment.CenterVertically
    ) {
        Text(
            text = "Rating:",
            modifier = Modifier.weight(1.0f)
        )
        Text(text = "$rating / 5.0")
    }
}

Mga katangian ng Row sa adaptive layout

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.

  • Modifier.horizontalScroll — nagdaragdag ng pag-scroll kapag umaapaw ang Row
  • Modifier.weight — namamahagi ng espasyo nang proporsyonal
  • Arrangement.SpaceBetween — adaptive na pamamahagi na may pagkakabit sa mga gilid

Mga Madalas Itanong

Ano ang pagkakaiba ng Row sa Column sa Jetpack Compose?

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.

Paano gumawa ng Row na may pag-scroll?

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.

Maaari bang ilagay ang Row sa loob ng isa pang Row?

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.

Ano ang ginagawa ng Modifier.weight sa Row?

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.

Paano i-center nang patayo ang mga elemento ng Row?

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

  • Row — pahalang na lalagyan ng Compose para sa paglalagay ng mga elemento sa isang hanay mula kaliwa pakanan na may nako-configure na pagkakaayos at pagkakahanay.
  • horizontalArrangement namamahala sa pahalang na pamamahagi ng mga elemento: Start, Center, End, SpaceBetween, SpaceEvenly at SpaceAround.
  • verticalAlignment nag-aayos ng mga elemento nang patayo sa pamamagitan ng Alignment.Top, CenterVertically o Bottom.
  • Modifier.weight namamahagi ng libreng espasyo sa pagitan ng mga elemento ayon sa tinukoy na bigat, kahalintulad sa flex-grow sa CSS.
  • Row ay sumusuporta sa pag-nenest, pag-scroll sa pamamagitan ng Modifier.horizontalScroll at pagtatrabaho sa iba pang mga lalagyan ng Compose.
  • Sa adaptive layout, mahalagang itakda ang Modifier.fillMaxWidth para sa Row na may weight, kung hindi, ang mga elemento ay hindi mamamahagi ng espasyo nang tama.
  • Para sa pahalang na listahan na may maraming elemento, gamitin ang LazyRow sa halip na Row para sa pinakamainam na pagganap.

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.

Pag-usapan ang proyekto

Basahin din