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.
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.
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.