Row a Jetpack Compose-ban: mi ez, a composable tulajdonságai és működése

Szerző: IT Sectr Megjelenés: 2026-06-28 Olvasási idő: 10 perc

Row — egy composable függvény a Jetpack Compose-ban gyermekelemek vízszintes sorba helyezéséhez. A Column-tól eltérően a Row balról jobbra rendezi az elemeket, és támogatja az elrendezés konfigurálását a horizontalArrangement és verticalAlignment paraméterekkel. A Google Android Documentation, 2025 szerint a Row a Compose három alapvető konténerének egyike a Column és a Box mellett, és vízszintes interfészstruktúrák létrehozására használják: gombsorok, beviteli mezők és ikonok szöveggel.

Főbb pontok

  • Row — vízszintes Jetpack Compose konténer, amely a gyermek elemeket egy sorba rendezi balról jobbra.
  • horizontalArrangement az elemek vízszintes elosztását kezeli: egyenletesen, hézagokkal vagy a konténer végén.
  • verticalAlignment függőlegesen igazítja az elemeket a konténerhez képest: felső szél, közép vagy alsó szél.
  • Modifier.weight lehetővé teszi a rendelkezésre álló hely elosztását a Row elemei között a megadott súly arányában.
  • Row hatékony gombsorok, ikonlisták, beviteli mezők és vízszintes eszköztárak létrehozására mobil felületeken.

Mi az a Row a Jetpack Compose-ban

Row — egy composable függvény, amely a gyermek elemeket vízszintes sorrendbe helyezi. A Compose elrendezések hierarchiájában a Row az alapkonténer szerepét tölti be a Column és a Box mellett.

A Row nem igényel méretek megadását — automatikusan alkalmazkodik a tartalomhoz. A Row szélessége egyenlő a gyermek elemek szélességének összegével a hézagokat figyelembe véve, kivéve ha Modifier.fillMaxWidth vagy rögzített méret van beállítva.

A Row gyermek elemei saját módosítókkal rendelkezhetnek, amelyek befolyásolják a pozíciójukat a konténeren belül. Például a Modifier.weight lehetővé teszi, hogy az elemek arányos részt foglaljanak el a rendelkezésre álló helyből.

A Android Developers Blog, 2024 szerint a Row szekvenciálisan dolgozza fel a gyermek elemeket, kiszámítva a méretüket a Compose mérési szabályai alapján: először a súly nélküli elemeket mérik, majd a fennmaradó helyet elosztják a súlyozott elemek között.

A Row szintaxisa és alap aláírása

A Row alap aláírása a modifier, horizontalArrangement és verticalAlignment paramétereket tartalmazza. Az összes gyermek elem az utolsó lambda content blokkban kerül átadásra.

kotlin
@Composable
fun RowExample() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly,
        verticalAlignment = Alignment.CenterVertically
    ) {
        Text(text = "Egy")
        Text(text = "Kettő")
        Text(text = "Három")
    }
}

A Row tulajdonságai: horizontalArrangement és verticalAlignment

A horizontalArrangement paraméter határozza meg, hogy a gyermek elemek hogyan oszlanak el a vízszintes tengely mentén a Row-n belül. Elérhető értékek: Start, End, Center, SpaceBetween, SpaceAround és SpaceEvenly az Arrangement osztályból.

Arrangement.Start a konténer elejére, Arrangement.End a végére, Arrangement.Center pedig a közepére helyezi az elemeket. Ezek az értékek hasonlóan működnek, mint a justify-content tulajdonság a CSS Flexbox-ban.

Arrangement.SpaceBetween egyenletesen osztja el az elemeket, az elsőt az elejére, az utolsót a végére helyezve, a többit pedig egyenlő hézagokkal közöttük. A Material Design Guidelines, 2025 szerint a SpaceBetween optimális eszköztárakhoz és navigációs sorokhoz.

A verticalAlignment paraméter függőlegesen igazítja az elemeket. Az Alignment.Top, Alignment.CenterVertically és Alignment.Bottom értékek érhetők el. Ez a tulajdonság akkor hasznos, ha a Row elemei különböző magasságúak — például egy ikon több soros szöveg mellett.

Az Arrangement értékek táblázata

ÉrtékLeírásAlkalmazás
StartElemek a Row elejéhez igazítvaBalra igazított sorok
CenterElemek a konténer közepénVízszintes menük, címsorok
SpaceBetweenEgyenletesen, első az elején, utolsó a végénEszköztárak, navigáció
SpaceEvenlyEgyenlő hézagok az elemek között és a szélekenGombsorok, egyenletes rácsok
SpaceAroundEgyenlő hézagok az elemek között, fél hézag a szélekenKarusszelek, ikongalériák

Hely elosztása a Modifier.weight segítségével

Modifier.weight — egy módosító, amely csak Row és Column belsejében érhető el, és a rendelkezésre álló helyet osztja el a gyermek elemek között a megadott érték arányában. Ha egy elem súlya 1.0f, egy másiké pedig 2.0f, a második elem kétszer annyi helyet foglal el.

A súly nélküli elemek annyi helyet foglalnak el, amennyi a tartalmukhoz szükséges. A fennmaradó hely a súlyozott elemek között oszlik el a súlyuk arányában. Ez a viselkedés analóg a flex-grow tulajdonsággal a CSS Flexbox-ban.

A Android Developer Documentation, 2025 szerint a súly csak Row, Column és BoxWithConstraints belsejében működik. A súly Row-ban történő használatakor az összes gyermek elemet két lépésben mérik: először a súly nélküli elemeket, majd a súlyozott elemeket.

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

Kódpéldák a Row-val

Az első példa egy Row-t mutat be ikonnal és szöveggel — tipikus forgatókönyv névjegyzékhez vagy beállításokhoz. Az Icon és Text középre igazított verticalAlignment-el van Row-ba csomagolva.

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 = "Hozzáadás a kedvencekhez")
    }
}

A második példa egy Row-t mutat be gombokkal és egyenletes elosztással. A SpaceEvenly egyenlő hézagokat garantál az összes gomb és a konténer szélei között.

kotlin
@Composable
fun ButtonRow() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly
    ) {
        Button(onClick = {}) { Text("Mégse") }
        Button(onClick = {}) { Text("Mentés") }
    }
}

A harmadik példa — Row egy Card-on belül az értékelés megjelenítéséhez. A beágyazott Row a Modifier.weight segítségével lehetővé teszi, hogy az értékelő csillag és a számérték rögzített helyet foglaljon el.

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

A Row jellemzői adaptív elrendezésben

Row szélesség-ellenőrzést igényel adaptív elrendezésben. Ha a Row tartalma meghaladja a rendelkezésre álló képernyőszélességet, az elemek kiléphetnek a konténer határain. Ennek megelőzésére használja a Modifier.horizontalScroll vagy váltson Column-ra.

A Row és Modifier.weight kombinálásakor fontos beállítani a fillMaxWidth-t a szülő Row-hoz — különben a súly nem létező helyet oszt el. A Material Design Guidelines, 2025 szerint a súlyozott Row fillMaxWidth nélkül helytelen konfigurációnak minősül.

Adaptív felületekhez ajánlott a Row és Box kombinálása vagy az Arrangement.SpaceBetween használata az elemek automatikus elosztásához különböző képernyőméreteken. Ez rugalmasságot biztosít médialekérdezések nélkül.

  • Modifier.horizontalScroll — görgetést ad hozzá a Row túlcsordulásakor
  • Modifier.weight — arányosan osztja el a helyet
  • Arrangement.SpaceBetween — adaptív elosztás rögzítéssel a széleken

Gyakran Ismételt Kérdések

Miben különbözik a Row a Column-tól a Jetpack Compose-ban?

Row vízszintesen (balról jobbra), míg a Column függőlegesen (fentről lefelé) rendezi el az elemeket. A Row a régi View megközelítésből ismert vízszintes LinearLayout-ot, a Column pedig a függőleges LinearLayout-ot helyettesíti.

Hogyan készíthető görgethető Row?

Adja hozzá a Modifier.horizontalScroll módosítót a Row-hoz. Nagy listákhoz lusta betöltéssel használja a LazyRow-t — ez csak a látható elemeket rendereli, és újrahasznosítja azokat görgetés közben.

Beágyazható-e a Row egy másik Row-ba?

Igen, a Row beágyazható egy másik Row-ba, Column-ba vagy Box-ba. Beágyazáskor vegye figyelembe, hogy a belső Row a szülő konténertől kapja a szélességet, és szükség esetén állítsa be a fillMaxWidth-t minden szinten.

Mit csinál a Modifier.weight a Row-ban?

Modifier.weight a Row-ban fennmaradó helyet osztja el a gyermek elemek között a megadott súly arányában. A 2.0f súlyú elem kétszer olyan széles lesz, mint az 1.0f súlyú. A súly csak Row és Column belsejében működik.

Hogyan igazíthatók középre a Row elemei függőlegesen?

Használja a verticalAlignment = Alignment.CenterVertically paramétert a Row létrehozásakor. Ez az összes gyermek elemet a függőleges tengely mentén igazítja, magasságuktól függetlenül.

Összefoglaló

  • Row — vízszintes Compose konténer elemek sorba rendezéséhez balról jobbra, konfigurálható elrendezéssel és igazítással.
  • horizontalArrangement kezeli az elemek vízszintes elosztását: Start, Center, End, SpaceBetween, SpaceEvenly és SpaceAround.
  • verticalAlignment függőlegesen igazítja az elemeket az Alignment.Top, CenterVertically vagy Bottom segítségével.
  • Modifier.weight a szabad helyet osztja el az elemek között a megadott súly arányában, analóg módon a CSS flex-grow tulajdonságával.
  • Row támogatja a beágyazást, görgetést a Modifier.horizontalScroll segítségével és együttműködést más Compose konténerekkel.
  • Adaptív elrendezésben fontos a Modifier.fillMaxWidth beállítása a súlyozott Row-hoz, különben az elemek nem osztják el megfelelően a helyet.
  • Socket vízszintes listákhoz sok elemmel, használja a LazyRow-t a Row helyett az optimális teljesítmény érdekében.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is