Lineares Layout erstellen

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zum Arbeiten mit Layouts in Compose

LinearLayout ist eine Ansichtsgruppe, die alle untergeordneten Elemente in einer einzigen Richtung ausrichtet, entweder vertikal oder horizontal. Die Layoutrichtung kann mit dem android:orientation Attribut angegeben werden.

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

Alle untergeordneten Elemente von LinearLayout werden übereinander gestapelt. Eine vertikale Liste hat also nur ein untergeordnetes Element pro Zeile, unabhängig von der Breite. Eine horizontale Liste ist nur eine Zeile hoch. Die Höhe entspricht der Höhe des höchsten untergeordneten Elements plus Padding. Ein LinearLayout berücksichtigt die Abstände zwischen untergeordneten Elementen und die Ausrichtung (rechts, zentriert oder links) der einzelnen untergeordneten Elemente.

Layoutgewicht

LinearLayout unterstützt auch die Zuweisung eines Gewichts zu einzelnen untergeordneten Elementen mit dem android:layout_weight Attribut. Mit diesem Attribut wird einer Ansicht ein Wert für die „Wichtigkeit“ zugewiesen, der angibt, wie viel Platz sie auf dem Bildschirm einnimmt. Mit einem höheren Gewichtswert kann die Ansicht so erweitert werden, dass sie den verbleibenden Platz in der übergeordneten Ansicht ausfüllt. Untergeordnete Ansichten können einen Gewichtswert angeben. Der verbleibende Platz in der Ansichtsgruppe wird den untergeordneten Elementen entsprechend ihrem deklarierten Gewicht zugewiesen. Das Standardgewicht ist 0.

Gleiche Verteilung

Wenn Sie ein lineares Layout erstellen möchten, in dem jedes untergeordnete Element denselben Platz auf dem Bildschirm einnimmt, legen Sie für ein vertikales Layout android:layout_height jeder Ansicht auf "0dp" oder für ein horizontales Layout android:layout_width jeder Ansicht auf "0dp" fest. Legen Sie dann android:layout_weight jeder Ansicht auf "1" fest.

Ungleiche Verteilung

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

  • Angenommen, Sie haben drei Textfelder: zwei mit einem Gewichtswert von 1 und ein drittes mit dem Standardgewichtswert von 0. Das dritte Textfeld mit dem Gewichtswert 0 nimmt nur den Platz ein, der für seinen Inhalt erforderlich ist. Die anderen beiden Textfelder mit dem Gewichtswert 1 werden gleichmäßig erweitert, um den Platz auszufüllen, der nach dem Messen der Inhalte aller drei Felder übrig bleibt.
  • Wenn Sie stattdessen drei Textfelder haben, von denen zwei einen Gewichtswert von 1 und das dritte einen Gewichtswert von 2 haben, wird der Platz, der nach dem Messen der Inhalte aller drei Felder übrig bleibt, wie folgt zugewiesen: die Hälfte an das Feld mit dem Gewichtswert 2 und die andere Hälfte gleichmäßig auf die Felder mit dem Gewichtswert 1 verteilt.

Die folgende Abbildung und das Code-Snippet zeigen, wie Layoutgewichte in einer Aktivität zum Senden von Nachrichten funktionieren können. Die Felder An und Betreff sowie die Schaltfläche Senden nehmen jeweils nur die Höhe ein, die sie benötigen. Der Nachrichtenbereich nimmt den Rest der Höhe der Aktivität ein.

Ein Bild mit drei EditTexts und einem Button 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 für jede Kinderansicht von LinearLayout verfügbar sind, finden Sie unter LinearLayout.LayoutParams.