Row in Jetpack Compose: Was es ist, composable Eigenschaften und wie es funktioniert

Autor: IT Sectr Veröffentlicht: 2026-06-28 Lesezeit: 10 Min.

Row ist eine composable-Funktion in Jetpack Compose zum Platzieren von untergeordneten Elementen in einer horizontalen Reihe. Im Gegensatz zu Column ordnet Row Elemente von links nach rechts an und unterstützt die Layout-Konfiguration über die Parameter horizontalArrangement und verticalAlignment. Laut Google Android Documentation, 2025 ist Row einer der drei grundlegenden Compose-Container neben Column und Box und wird zur Erstellung horizontaler Schnittstellenstrukturen verwendet: Schaltflächenzeilen, Eingabefelder und Symbole mit Text.

Wichtige Erkenntnisse

  • Row ist ein horizontaler Jetpack Compose-Container, der untergeordnete composable-Elemente in einer einzigen Zeile von links nach rechts anordnet.
  • horizontalArrangement steuert die Verteilung der Elemente horizontal: gleichmäßig, mit Abständen oder am Ende des Containers.
  • verticalAlignment richtet Elemente vertikal relativ zum Container aus: oben, mitte oder unten.
  • Modifier.weight ermöglicht die Verteilung des verfügbaren Platzes zwischen Row-Elementen proportional zum angegebenen Gewicht.
  • Row ist effektiv zum Erstellen von Schaltflächenzeilen, Symbollisten, Eingabefeldern und horizontalen Symbolleisten in mobilen Oberflächen.

Was ist Row in Jetpack Compose

Row ist eine composable-Funktion, die untergeordnete Elemente in einer horizontalen Sequenz anordnet. In der Compose-Layout-Hierarchie nimmt Row die Position eines grundlegenden Containers neben Column und Box ein.

Row erfordert keine Angabe von Abmessungen — es passt sich automatisch an seinen Inhalt an. Die Breite von Row entspricht der Summe der Breiten der untergeordneten Elemente einschließlich Auffüllung, sofern nicht Modifier.fillMaxWidth oder eine feste Größe angegeben wird.

Untergeordnete Elemente von Row können eigene Modifikatoren haben, die ihre Position innerhalb des Containers beeinflussen. Beispielsweise ermöglicht Modifier.weight Elementen, einen proportionalen Teil des verfügbaren Platzes zu belegen.

Laut Android Developers Blog, 2024 verarbeitet Row untergeordnete Elemente sequentiell und berechnet ihre Größen basierend auf Compose-Messregeln: zuerst werden Elemente ohne weight gemessen, dann wird der verbleibende Platz zwischen Elementen mit weight verteilt.

Row-Syntax und grundlegende Signatur

Die grundlegende Signatur von Row umfasst den Parameter modifier, horizontalArrangement und verticalAlignment. Alle untergeordneten Elemente werden im abschließenden content-Lambda-Block übergeben.

kotlin
@Composable
fun RowExample() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly,
        verticalAlignment = Alignment.CenterVertically
    ) {
        Text(text = "Eins")
        Text(text = "Zwei")
        Text(text = "Drei")
    }
}

Row-Eigenschaften: horizontalArrangement und verticalAlignment

Der Parameter horizontalArrangement bestimmt, wie untergeordnete Elemente entlang der horizontalen Achse innerhalb von Row verteilt werden. Verfügbare Werte sind Start, End, Center, SpaceBetween, SpaceAround und SpaceEvenly aus der Klasse Arrangement.

Arrangement.Start platziert Elemente am Anfang des Containers, Arrangement.End — am Ende, und Arrangement.Center — in der Mitte. Diese Werte funktionieren ähnlich wie die justify-content-Eigenschaft in CSS Flexbox.

Arrangement.SpaceBetween verteilt Elemente gleichmäßig, wobei das erste Element am Anfang, das letzte am Ende und die restlichen mit gleichen Abständen dazwischen platziert werden. Laut Material Design Guidelines, 2025 ist SpaceBetween optimal für Symbolleisten und Navigationszeilen.

Der Parameter verticalAlignment richtet Elemente vertikal aus. Verfügbare Werte sind Alignment.Top, Alignment.CenterVertically und Alignment.Bottom. Diese Eigenschaft ist nützlich, wenn Row-Elemente unterschiedliche Höhen haben — beispielsweise ein Symbol neben mehrzeiligem Text.

Tabelle der Arrangement-Werte

WertBeschreibungVerwendung
StartElemente werden an den Anfang von Row geschobenLinksbündige Zeilen
CenterElemente werden im Container zentriertHorizontale Menüs, Kopfzeilen
SpaceBetweenGleichmäßig mit erstem am Anfang und letztem am EndeSymbolleisten, Navigation
SpaceEvenlyGleiche Abstände zwischen Elementen und an den RändernSchaltflächenzeilen, gleichmäßige Raster
SpaceAroundGleiche Abstände zwischen Elementen, halber Abstand an den RändernKarussells, Symbolgalerien

Platzverteilung mit Modifier.weight

Modifier.weight ist ein Modifikator, der nur innerhalb von Row und Column verfügbar ist und den verfügbaren Platz zwischen untergeordneten Elementen proportional zum angegebenen Wert verteilt. Wenn ein Element ein Gewicht von 1.0f hat und ein anderes 2.0f, nimmt das zweite Element doppelt so viel Platz ein.

Elemente ohne weight belegen den für ihren Inhalt benötigten Platz. Der verbleibende Platz wird zwischen Elementen mit weight proportional zu ihrem Gewicht verteilt. Dieses Verhalten ähnelt der flex-grow-Eigenschaft in CSS Flexbox.

Laut Android Developer Documentation, 2025 funktioniert weight nur innerhalb von Row, Column und BoxWithConstraints. Bei Verwendung von weight in Row werden alle untergeordneten Elemente in zwei Durchgängen gemessen: zuerst Elemente ohne weight, dann Elemente mit weight.

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

Codebeispiele mit Row

Das erste Beispiel zeigt Row mit einem Symbol und Text — ein typisches Szenario für eine Kontaktliste oder Einstellungen. Icon und Text sind in Row mit verticalAlignment zentriert eingeschlossen.

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 = "Zu Favoriten hinzufügen")
    }
}

Das zweite Beispiel zeigt Row mit Schaltflächen und gleichmäßiger Verteilung. SpaceEvenly garantiert gleiche Abstände zwischen allen Schaltflächen und den Rändern des Containers.

kotlin
@Composable
fun ButtonRow() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly
    ) {
        Button(onClick = {}) { Text("Abbrechen") }
        Button(onClick = {}) { Text("Speichern") }
    }
}

Das dritte Beispiel — Row innerhalb einer Card zur Anzeige einer Bewertung. Eine verschachtelte Row mit Modifier.weight ermöglicht es dem Bewertungsstern und dem numerischen Wert, festen Platz einzunehmen.

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

Row-Eigenschaften im adaptiven Layout

Row erfordert Breitenkontrolle im adaptiven Layout. Wenn der Inhalt von Row die verfügbare Bildschirmbreite überschreitet, können Elemente über die Containergrenzen hinausragen. Verwenden Sie Modifier.horizontalScroll oder wechseln Sie zu Column, um dies zu verhindern.

Bei der Kombination von Row mit Modifier.weight ist es wichtig, fillMaxWidth für die übergeordnete Row festzulegen — andernfalls verteilt weight nicht vorhandenen Platz. Laut Material Design Guidelines, 2025 gilt Row mit weight ohne fillMaxWidth als ungültige Konfiguration.

Für adaptive Oberflächen wird empfohlen, Row mit Box zu kombinieren oder Arrangement.SpaceBetween für die automatische Elementverteilung auf verschiedenen Bildschirmgrößen zu verwenden. Dies bietet Flexibilität ohne Medienabfragen.

  • Modifier.horizontalScroll — fügt Bildlauf hinzu, wenn Row überläuft
  • Modifier.weight — verteilt Platz proportional
  • Arrangement.SpaceBetween — adaptive Verteilung mit Randfixierung

Häufig gestellte Fragen

Wie unterscheidet sich Row von Column in Jetpack Compose?

Row platziert Elemente horizontal (von links nach rechts), während Column sie vertikal (von oben nach unten) platziert. Row ersetzt LinearLayout mit horizontaler Ausrichtung aus dem alten View-Ansatz und Column ersetzt vertikales LinearLayout.

Wie erstelle ich eine scrollbare Row?

Fügen Sie den Modifikator Modifier.horizontalScroll zu Row hinzu. Für große Listen mit trägem Laden verwenden Sie LazyRow — es rendert nur sichtbare Elemente und recycelt sie während des Bildlaufs.

Kann Row in eine andere Row verschachtelt werden?

Ja, Row kann in eine andere Row, Column oder Box verschachtelt werden. Beachten Sie bei der Verschachtelung, dass die innere Row ihre Breite vom übergeordneten Container erhält, und setzen Sie gegebenenfalls fillMaxWidth für jede Ebene.

Was macht Modifier.weight in Row?

Modifier.weight verteilt den verbleibenden Platz in Row proportional zum angegebenen Gewicht zwischen den untergeordneten Elementen. Ein Element mit Gewicht 2.0f wird doppelt so breit wie ein Element mit Gewicht 1.0f. Weight funktioniert nur innerhalb von Row und Column.

Wie zentriere ich Row-Elemente vertikal?

Verwenden Sie den Parameter verticalAlignment = Alignment.CenterVertically beim Erstellen von Row. Dadurch werden alle untergeordneten Elemente unabhängig von ihrer Höhe entlang der vertikalen Achse ausgerichtet.

Zusammenfassung

  • Row ist ein horizontaler Compose-Container zum Platzieren von Elementen in einer Zeile von links nach rechts mit anpassbarer Anordnung und Ausrichtung.
  • horizontalArrangement steuert die horizontale Verteilung der Elemente: Start, Center, End, SpaceBetween, SpaceEvenly und SpaceAround.
  • verticalAlignment richtet Elemente vertikal über Alignment.Top, CenterVertically oder Bottom aus.
  • Modifier.weight verteilt freien Platz zwischen Elementen proportional zum angegebenen Gewicht, ähnlich wie flex-grow in CSS.
  • Row unterstützt Verschachtelung, Bildlauf über Modifier.horizontalScroll und die Zusammenarbeit mit anderen Compose-Containern.
  • Im adaptiven Layout ist es wichtig, Modifier.fillMaxWidth für Row mit weight festzulegen, da sonst Elemente den Platz nicht korrekt verteilen.
  • Für horizontale Listen mit vielen Elementen verwenden Sie LazyRow anstelle von Row für optimale Leistung.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch