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