Lineares Layout erstellen

Funktion „Schreiben“ ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Hier erfahren Sie, wie Sie in der Funktion „Compose“ mit Layouts arbeiten.

LinearLayout ist eine Ansichtsgruppe, in der alle untergeordneten Elemente in einer Richtung, vertikal oder horizontal, ausgerichtet werden. Die Layoutrichtung können Sie mit dem Attribut android:orientation angeben.

Ein Bild, das ein Layout zeigt, das in drei vertikale Segmente unterteilt ist
Abbildung 1. Ein LinearLayout mit drei horizontal ausgerichteten untergeordneten Elementen.

Alle untergeordneten Elemente einer LinearLayout werden übereinander gestapelt. Daher enthält eine vertikale Liste unabhängig von der Breite nur ein untergeordnetes Element pro Zeile. Eine horizontale Liste ist nur eine Zeile hoch. Sie entspricht der Höhe des größten untergeordneten Elements, zuzüglich des Abstands. Ein LinearLayout berücksichtigt die Ränder zwischen Kindern und die Schwerkraft – rechts, mittig oder links – jedes untergeordneten Elements.

Layoutstärke

LinearLayout unterstützt auch das Zuweisen einer Gewichtung einzelnen Kindern mit dem Attribut android:layout_weight. Dieses Attribut weist einer Ansicht einen Wert für die Wichtigkeit zu, der angibt, wie viel Platz sie auf dem Bildschirm einnimmt. Bei einem höheren Gewichtungswert wird die Anzeige auf den verbleibenden Platz in der übergeordneten Ansicht erweitert. Für untergeordnete Ansichten kann ein Gewichtungswert angegeben werden. Der verbleibende Bereich in der Ansichtsgruppe wird den untergeordneten Ansichten proportional zu ihrer deklarierten Gewichtung zugewiesen. Die Standardgewichtung ist null.

Gleiche Verteilung

Wenn Sie ein lineares Layout erstellen möchten, bei dem alle untergeordneten Elemente den gleichen Platz auf dem Bildschirm nutzen, setzen Sie den android:layout_height jeder Ansicht auf "0dp" für ein vertikales Layout oder den android:layout_width jeder Ansicht auf "0dp" für ein horizontales Layout. Legen Sie dann android:layout_weight jeder Ansicht auf "1" fest.

Ungleiche Verteilung

Sie können auch lineare Layouts erstellen, bei denen die untergeordneten Elemente unterschiedlich viel Platz auf dem Bildschirm einnehmen. Betrachten Sie die folgenden Beispiele:

  • Angenommen, Sie haben drei Textfelder: zwei mit einem Gewichtungswert von 1 und ein drittes mit dem Standardwert für die Gewichtung von 0. Das dritte Textfeld mit dem Gewichtungswert 0 belegt nur den für seinen Inhalt erforderlichen Bereich. Die anderen beiden Textfelder mit dem Gewichtungswert 1 werden gleichmäßig erweitert, um den verbleibenden Platz zu füllen, nachdem der Inhalt aller drei Felder gemessen wurde.
  • Wenn Sie stattdessen drei Textfelder haben, von denen zwei eine Gewichtung von 1 und das dritte eine Gewichtung von 2 hat, wird der Abstand, der nach dem Inhalt aller drei Felder verbleibt, so zugewiesen: die Hälfte wird dem Feld mit dem Gewichtungswert 2 und die Hälfte gleichmäßig auf die Felder mit dem Gewichtungswert 1 aufgeteilt.

Die folgende Abbildung und das Code-Snippet zeigen, wie Layoutgewichtungen in einer Aktivität vom Typ „Nachricht senden“ funktionieren können. Das Feld An, die Betreffzeile und die Schaltfläche Senden nehmen jeweils nur die benötigte Höhe ein. Der Nachrichtenbereich nimmt die restliche Höhe der Aktivität ein.

Ein Bild mit drei EditTexts und einer Schaltfläche in einem vertikal ausgerichteten LinearLayout
Abbildung 2. Drei Textfelder und eine Schaltfläche in einem vertikal ausgerichteten LinearLayout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:text="@string/send" />
</LinearLayout>

Weitere Informationen zu den Attributen, die in den einzelnen untergeordneten Ansichten eines LinearLayout verfügbar sind, finden Sie unter LinearLayout.LayoutParams.