Containerverhalten festlegen

Wenn Sie das Verhalten des FlexBox-Containers konfigurieren möchten, erstellen Sie einen FlexBoxConfig-Block und geben Sie ihn mit dem Parameter config an.

FlexBox(
    config = {
        direction(FlexDirection.Column)
        wrap(FlexWrap.Wrap)
        alignItems(FlexAlignItems.Center)
        alignContent(FlexAlignContent.SpaceAround)
        justifyContent(FlexJustifyContent.Center)
        gap(16.dp)
    }
) { // child items
}

Verwenden Sie FlexBoxConfig, um die Layoutrichtung, das Umbruchverhalten, die Ausrichtung und die Abstände zwischen Elementen zu definieren.

Layoutrichtung

Mit der Funktion direction wird die Hauptachse festgelegt, die die Richtung vorgibt, in der Elemente angeordnet werden. Folgende Werte sind zulässig:

  • Row (Standard): Legt die Hauptachse als horizontal fest. In Sprachen, die von links nach rechts gelesen werden, ist dies von links nach rechts, in Sprachen, die von rechts nach links gelesen werden, ist es umgekehrt.
  • RowReverse: Kehrt die Richtung von Row um.
  • Column: Legt die Hauptachse als vertikal von oben nach unten fest.
  • ColumnReverse: Kehrt die Richtung von Column um.

Elemente ausrichten und zusätzlichen Platz verteilen

In den folgenden Abschnitten wird beschrieben, wie Sie Elemente ausrichten und zusätzlichen Platz entlang der Haupt- und Querachse verteilen.

Entlang der Hauptachse

Verwenden Sie justifyContent, um Elemente entlang der Hauptachse zu verteilen. In der folgenden Tabelle wird das Verhalten für die Richtung Row gezeigt.

Abbildung einer horizontalen Hauptachse.

Start

Elemente werden am Anfang der Hauptachse ausgerichtet.

Center

Elemente, die an der Mitte der Hauptachse ausgerichtet sind.

End

Elemente, die am Ende der Hauptachse ausgerichtet sind.

SpaceBetween

Elemente, die entlang der Hauptachse verteilt sind, mit Abstand dazwischen.

SpaceAround

Elemente, die entlang der Hauptachse verteilt sind, mit Abstand um sie herum.

SpaceEvenly

Die Elemente sind entlang der Hauptachse verteilt, mit gleichmäßigem Abstand um sie herum.

Entlang der Querachse

Verwenden Sie alignItems, um Elemente entlang der Querachse innerhalb einer einzelnen Zeile auszurichten. Dieses Verhalten kann für einzelne Elemente mit dem Modifikator alignSelf überschrieben werden.

Die folgenden Bilder zeigen das Verhalten, wenn die Richtung Row ist:

Abbildung einer vertikalen Kreuzachse. Elemente, die am Anfang der Querachse ausgerichtet sind. Elemente werden am Ende der Querachse ausgerichtet. Die Elemente werden in der Mitte der Querachse ausgerichtet. Die Elemente werden so gestreckt, dass sie die Querachse ausfüllen. Die Elemente werden entlang der Querachse an ihrer Baseline ausgerichtet.

Start

End

Center

Stretch

Baseline

Verwenden Sie alignContent, um Zeilen an der Querachse auszurichten und zusätzlichen Platz zwischen den Zeilen zu verteilen. Diese Eigenschaft gilt nur, wenn mehrere Zeilen vorhanden sind (Zeilenumbruch ist aktiviert). Die folgenden Bilder zeigen das Verhalten, wenn die Richtung Row ist:

Abbildung einer vertikalen Kreuzachse. Mehrere Zeilen mit Elementen, die am Startrand der Querachse ausgerichtet sind. Mehrere Zeilen mit Elementen, die am Ende der Querachse ausgerichtet sind. Mehrere Zeilen mit Elementen, die an der Mitte der Querachse ausgerichtet sind. Mehrere Zeilen mit Elementen, die so gestreckt sind, dass sie die Querachse ausfüllen. Mehrere Zeilen mit Elementen, die entlang der Querachse verteilt sind, mit Abstand dazwischen. Mehrere Zeilen mit Elementen, die entlang der Querachse verteilt sind, mit Abstand um sie herum.

Start

End

Center

Stretch

SpaceBetween

SpaceAround

Elemente umbrechen

Durch den Zeilenumbruch kann ein FlexBox-Container mehrzeilig werden. Elemente, die nicht in eine neue Zeile oder Spalte passen, werden entlang der Querachse verschoben. Konfigurieren Sie das Umbruchverhalten mit wrap.

FlexWrap-Wert

Beispiel mit der Richtung Row

NoWrap (Standard): Verhindert, dass Elemente umgebrochen werden. Elemente werden umgebrochen, wenn die Hauptgröße nicht ausreicht.

Elemente in einer einzelnen Zeile, die den Container überlaufen, weil der Zeilenumbruch deaktiviert ist.

Wrap: Wenn nicht genügend Platz für ein Element (plus etwaige Lücken) vorhanden ist, wird eine neue Zeile in Richtung der Querachse erstellt. Wenn die Richtung beispielsweise Row ist, wird eine neue Zeile darunter hinzugefügt.

Elemente, die in eine neue Zeile umgebrochen werden, weil der Umbruch aktiviert ist.

WrapReverse: Entspricht Wrap, mit dem Unterschied, dass die neue Zeile in der entgegengesetzten Richtung zur Querachse hinzugefügt wird. Wenn die Richtung beispielsweise Row ist, wird eine neue Zeile oberhalb hinzugefügt.

Elemente, die in eine neue Zeile darüber umgebrochen werden, weil der umgekehrte Umbruch aktiviert ist.

Das folgende Beispiel zeigt, wie der Wrapping-Algorithmus FlexBox funktioniert. Der Container FlexBox hat eine Hauptgröße von 100dp, wobei wrap auf FlexWrap.Wrap und eine Lücke von 8dp festgelegt ist. Sie enthält drei Elemente mit den basis-Werten 20dp, 40dp und 50dp.

In der Zeile ist noch Platz für 100dp. Kind 1 ist 20dp. Es ist Platz vorhanden, also wird Kind 1 in die Zeile eingefügt.

Das erste Element, das im FlexBox-Container platziert wird.
Abbildung 1. Erstes Element im Container FlexBox.

In der Zeile ist noch Platz für 80dp. Die Lücke beträgt 8dp. Kind 2 ist 40dp. Der erforderliche Speicherplatz beträgt 48dp. Es ist Platz vorhanden, also werden die Lücke und Kind 2 in der Zeile platziert.

Zweites Element, das nach dem ersten Element im FlexBox-Container platziert wird.
Abbildung 2: Zweites Element, das nach dem ersten Element im FlexBox-Container platziert wird.

In der Zeile ist noch Platz für 32dp. Die Lücke beträgt 8dp. Kind 3 ist 50dp. Der erforderliche Speicherplatz beträgt 58dp. In der aktuellen Zeile ist nicht genügend Platz, daher wird untergeordnetes Element 3 in einer neuen Zeile platziert.

Das dritte Element wird in einer neuen Zeile platziert, da es nicht in die erste Zeile passt.
Abbildung 3: Das dritte Element wird in einer neuen Zeile platziert, da es nicht in die erste Zeile passt.

Abstände zwischen Elementen hinzufügen

Mit rowGap und columnGap können Sie Abstände zwischen Zeilen und Spalten hinzufügen. Das ist nützlich, um zu vermeiden, dass untergeordneten Elementen Abstandsmodifikatoren hinzugefügt werden.

Mit „Zeilenabstand“ wird vertikaler Abstand zwischen Elementen hinzugefügt. Mit „Spaltenabstand“ wird horizontaler Abstand zwischen Elementen hinzugefügt. Mit „Abstand“ wird sowohl horizontaler als auch vertikaler Abstand zwischen Elementen hinzugefügt.

rowGap

fügt vertikalen Abstand zwischen Elementen und Zeilen hinzu.

columnGap

fügt horizontalen Abstand zwischen Elementen und Zeilen hinzu.

gap ist eine praktische Funktion, mit der sowohl columnGap als auch rowGap hinzugefügt werden.