Layoutressource

Eine Layoutressource definiert die Architektur der UI in einer Activity oder einer Komponente einer UI.

Dateispeicherort:
res/layout/filename.xml
Der Dateiname wird als Ressourcen-ID verwendet.
kompilierter Ressourcentyp:
Ressourcenzeiger auf eine Ressource vom Typ View (oder Unterklasse)
Ressourcenreferenz:
In Java: R.layout.filename
In XML: @[package:]layout/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

Hinweis:Das Stammelement kann ein ViewGroup-, View- oder <merge>-Element sein. Es kann jedoch nur ein Stammelement geben, das das Attribut xmlns:android mit dem Namespace android enthalten muss, wie im vorherigen Syntaxbeispiel gezeigt.

Elemente:
<ViewGroup>
Ein Container für andere View-Elemente. Es gibt viele verschiedene Arten von ViewGroup-Objekten. Mit jedem Objekt kannst du das Layout der untergeordneten Elemente auf unterschiedliche Weise angeben. Zu den verschiedenen Arten von ViewGroup-Objekten gehören LinearLayout, RelativeLayout und FrameLayout.

Gehen Sie nicht davon aus, dass bei Ableitungen von ViewGroup verschachtelte Ansichten akzeptiert werden. Einige Ansichtsgruppen sind Implementierungen der Klasse AdapterView, deren untergeordnete Elemente nur aus einer Adapter bestimmt werden.

Attribute:

android:id
Ressourcen-ID. Ein eindeutiger Ressourcenname für das Element, mit dem Sie einen Verweis auf die ViewGroup aus Ihrer Anwendung abrufen können. Weitere Informationen finden Sie im Abschnitt Wert für android:id.
android:layout_height
Dimension oder Keyword: Erforderlich. Die Höhe der Gruppe als Dimensionswert (oder Dimensionsressource) oder als Suchbegriff ("match_parent" oder "wrap_content"). Weitere Informationen finden Sie im Abschnitt Werte für android:layout_height und android:layout_width.
android:layout_width
Dimension oder Keyword: Erforderlich. Die Breite der Gruppe als Dimensionswert (oder Dimensionsressource) oder als Suchbegriff ("match_parent" oder "wrap_content"). Weitere Informationen finden Sie im Abschnitt Werte für android:layout_height und android:layout_width.

Die Basisklasse ViewGroup unterstützt mehr Attribute. Bei jeder Implementierung von ViewGroup werden viele weitere Attribute unterstützt. Eine Referenz zu allen verfügbaren Attributen finden Sie in der entsprechenden Referenzdokumentation zur Klasse ViewGroup, z. B. zu den XML-Attributen LinearLayout.

<View>
Eine einzelne UI-Komponente, die im Allgemeinen als Widget bezeichnet wird. Zu den verschiedenen Arten von View-Objekten gehören TextView, Button und CheckBox.

Attribute:

android:id
Ressourcen-ID. Ein eindeutiger Ressourcenname für das Element, mit dem Sie einen Verweis auf die View aus Ihrer Anwendung abrufen können. Weitere Informationen finden Sie im Abschnitt Wert für android:id.
android:layout_height
Dimension oder Keyword: Erforderlich. Die Höhe des Elements als Dimensionswert (oder Dimensionsressource) oder als Suchbegriff ("match_parent" oder "wrap_content"). Weitere Informationen finden Sie im Abschnitt Werte für android:layout_height und android:layout_width.
android:layout_width
Dimension oder Keyword: Erforderlich. Die Breite des Elements als Dimensionswert (oder Dimensionsressource) oder als Suchbegriff ("match_parent" oder "wrap_content"). Weitere Informationen finden Sie im Abschnitt Werte für android:layout_height und android:layout_width.

Die Basisklasse View unterstützt mehr Attribute. Bei jeder Implementierung von View werden viele weitere Attribute unterstützt. Weitere Informationen finden Sie unter Layouts. Eine Referenz zu allen verfügbaren Attributen finden Sie in der entsprechenden Referenzdokumentation, z. B. zu den XML-Attributen TextView.

<requestFocus>
Jedes Element, das ein View-Objekt darstellt, kann dieses leere Element enthalten, das seinen Anfangsfokus auf dem Bildschirm hat. Pro Datei kann nur eines dieser Elemente verwendet werden.
<include>
Umfasst eine Layoutdatei in dieses Layout.

Attribute:

layout
Layoutressource. Erforderlich. Verweis auf eine Layoutressource.
android:id
Ressourcen-ID. Überschreibt die ID, die der Stammansicht im enthaltenen Layout zugewiesen ist.
android:layout_height
Dimension oder Keyword: Überschreibt die Höhe, die der Stammansicht im enthaltenen Layout zugewiesen ist. Nur wirksam, wenn android:layout_width ebenfalls deklariert ist.
android:layout_width
Dimension oder Keyword: Überschreibt die Breite, die der Stammansicht im enthaltenen Layout zugewiesen ist. Nur wirksam, wenn android:layout_height ebenfalls deklariert ist.

Sie können im <include> alle anderen Layoutattribute angeben, die vom Stammelement im enthaltenen Layout unterstützt werden. Diese Attribute überschreiben die im Stammelement definierten Attribute.

Achtung:Wenn Sie Layoutattribute mit dem Tag <include> überschreiben möchten, müssen Sie sowohl android:layout_height als auch android:layout_width überschreiben, damit die anderen Layoutattribute wirksam werden.

Eine weitere Möglichkeit, ein Layout einzubinden, ist die Verwendung von ViewStub: eine einfache Ansicht, die keinen Layoutbereich beansprucht, bis Sie sie explizit aufblähen. Dabei wird eine durch ihr android:layout-Attribut definierte Layoutdatei mit aufgenommen. Weitere Informationen zur Verwendung von ViewStub finden Sie unter Ansichten bei Bedarf laden.

<merge>
Ein alternatives Stammelement, das nicht in der Layouthierarchie eingezeichnet wird. Die Verwendung als Stammelement ist nützlich, wenn Sie wissen, dass dieses Layout in einem Layout platziert wird, das bereits das entsprechende übergeordnete Element (View) für die untergeordneten Elemente des <merge>-Elements enthält.

Das ist besonders nützlich, wenn Sie dieses Layout mithilfe von <include> in eine andere Layoutdatei einfügen möchten und dieses Layout keinen anderen ViewGroup-Container erfordert. Weitere Informationen zum Zusammenführen von Layouts finden Sie unter Layouts mit <include> wiederverwenden.

Wert für android:id

Für den ID-Wert verwenden Sie normalerweise diese Syntaxform: "@+id/name", wie im folgenden Beispiel gezeigt. Das Pluszeichen + gibt an, dass dies eine neue Ressourcen-ID ist. Das aapt-Tool erstellt eine neue Ressourcen-ID in der Klasse R.java, sofern diese noch nicht vorhanden ist.

<TextView android:id="@+id/nameTextbox"/>

Der Name nameTextbox ist jetzt eine Ressourcen-ID, die an dieses Element angehängt ist. Sie können dann auf die TextView verweisen, mit der die ID in Java verknüpft ist:

Kotlin

val textView: TextView? = findViewById(R.id.nameTextbox)

Java

TextView textView = findViewById(R.id.nameTextbox);

Dieser Code gibt das TextView-Objekt zurück.

Wenn Sie jedoch bereits eine ID-Ressource definiert haben und diese noch nicht verwendet wird, können Sie diese ID auf ein View-Element anwenden. Dazu schließen Sie das Pluszeichen im Wert android:id aus.

Werte für android:layout_height und android:layout_width

Die Werte für Höhe und Breite werden mithilfe der von Android unterstützten Dimensionseinheiten (px, dp, sp, pt, in, mm) oder mit den folgenden Suchbegriffen ausgedrückt:

AntwortBeschreibung
match_parent Legt die Dimension so fest, dass sie mit der des übergeordneten Elements übereinstimmt. In API-Level 8 hinzugefügt, um fill_parent zu verwerfen.
wrap_content Legt die Abmessung nur auf die Größe fest, die für den Inhalt dieses Elements erforderlich ist.

Benutzerdefinierte Ansichtselemente

Sie können benutzerdefinierte View- und ViewGroup-Elemente erstellen und sie wie ein Standardlayoutelement auf Ihr Layout anwenden. Sie können auch die im XML-Element unterstützten Attribute angeben. Weitere Informationen finden Sie unter Benutzerdefinierte Ansichtskomponenten erstellen.

Beispiel:
XML-Datei gespeichert unter res/layout/main_activity.xml:
<?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:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

Mit diesem Anwendungscode wird das Layout für ein Activity in der Methode onCreate() geladen:

Kotlin

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

Java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
Siehe auch: