Referenz zu tools-Attributen

Android Studio unterstützt eine Reihe von XML-Attributen im tools-Namespace, mit denen Funktionen während der Entwicklung ermöglicht werden, z. B. welches Layout in einem Fragment angezeigt werden soll oder Verhaltensweisen während der Kompilierung, z. B. welcher Schrumpfmodus auf Ihre XML-Ressourcen angewendet werden soll. Wenn Sie Ihre App erstellen, entfernen die Build-Tools diese Attribute, sodass es keine Auswirkungen auf die APK-Größe oder das Laufzeitverhalten gibt.

Um diese Attribute zu nutzen, fügen Sie dem Stammelement jeder XML-Datei, in der Sie die Attribute verwenden möchten, den tools-Namespace hinzu:

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

Fehlerbehandlungsattribute

Die folgenden Attribute helfen, Lint-Warnmeldungen zu unterdrücken:

tools:ignore

Vorgesehen für:jedes Element

Verwendet von:Lint

Für dieses Attribut ist eine durch Kommas getrennte Liste von Lint-Problem-IDs zulässig, die die Tools für dieses Element oder seine Nachfolger ignorieren sollen.

Beispielsweise können Sie festlegen, dass die Tools den Fehler MissingTranslation ignorieren sollen:

<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

tools:targetApi

Vorgesehen für: beliebiges Element

Verwendet von: Lint

Dieses Attribut funktioniert wie die Annotation @TargetApi im Java-Code. Sie können damit die API-Ebene (entweder als Ganzzahl oder als Codename) angeben, die dieses Element unterstützt.

Dadurch wird den Tools mitgeteilt, dass dieses Element und alle untergeordneten Elemente Ihrer Meinung nach nur auf dem angegebenen API-Level oder höher verwendet werden. Sie werden dann nicht mehr von Lint gewarnt, wenn dieses Element oder seine Attribute nicht auf der API-Ebene verfügbar sind, die Sie als minSdkVersion angeben.

Sie können dieses Attribut verwenden, weil GridLayout nur auf API-Level 14 und höher verfügbar ist. Sie wissen aber, dass dieses Layout nicht in Ihrem Code für niedrigere Versionen verwendet wird:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="14" >

Wir empfehlen jedoch, stattdessen GridLayout aus der Supportbibliothek zu verwenden.

tools:locale

Vorgesehen für: <resources>

Verwendet von:Lint, Android Studio-Editor

Dadurch wird den Tools mitgeteilt, welche Standardsprache oder -region für die Ressourcen im jeweiligen <resources>-Element verwendet wird, um Warnungen der Rechtschreibprüfung zu vermeiden. Ansonsten wird im Tool davon ausgegangen, dass die Sprache Englisch ist.

Der Wert muss ein gültiger Gebietsschema-Qualifier sein.

Sie können dies beispielsweise in Ihre Standarddatei values/strings.xml aufnehmen, um anzugeben, dass für die Standardstrings statt Englisch Spanisch verwendet wird:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

Ansichtsattribute während der Entwicklung

Die folgenden Attribute definieren Layouteigenschaften, die nur in der Layoutvorschau von Android Studio sichtbar sind.

tools: statt android:

Vorgesehen für: <View>

Wird verwendet von:Layout-Editor von Android Studio

Du kannst Beispieldaten mit einem beliebigen <View>-Attribut aus dem Android-Framework in die Layoutvorschau einfügen, indem du das Präfix tools: anstelle von android: verwendest. Dies ist nützlich, wenn der Wert des Attributs erst während der Laufzeit ausgefüllt wird und Sie den Effekt in der Layoutvorschau sehen möchten.

Wenn beispielsweise der Attributwert android:text während der Laufzeit festgelegt wird oder Sie das Layout mit einem anderen Wert als dem Standardwert anzeigen möchten, können Sie tools:text hinzufügen, um Text nur für die Layoutvorschau anzugeben.

Mit dem Attribut „tools:text“ wird Google Voice als Wert für die Layoutvorschau festgelegt.
Abbildung 1: Das Attribut tools:text legt „Google Voice“ als Wert für die Layoutvorschau fest.

Sie können sowohl das Namespace-Attribut android:, das während der Laufzeit verwendet wird, als auch das entsprechende Attribut tools: hinzufügen, das das Laufzeitattribut nur in der Layoutvorschau überschreibt.

Mit einem tools:-Attribut können Sie auch eine Attributeinstellung nur für die Layoutvorschau rückgängig machen. Wenn Sie beispielsweise ein FrameLayout mit zwei untergeordneten Elementen haben, in der Layoutvorschau aber nur ein untergeordnetes Element sehen möchten, können Sie eines davon in der Layoutvorschau als unsichtbar festlegen, wie hier gezeigt:

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="First" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Second"
    tools:visibility="invisible"  />

Wenn Sie den Layout-Editor in der Designansicht verwenden, können Sie im Fenster Eigenschaften einige Ansichtsattribute der Entwurfszeit bearbeiten. Jedes Designzeitattribut ist mit einem Schraubenschlüsselsymbol Das Schraubenschlüsselsymbol neben dem Attributnamen gekennzeichnet, um es vom echten Attribut desselben Namens zu unterscheiden.

tools:context

Vorgesehen für:alle Root-<View>

Wird verwendet von:Lint, Android Studio Layout Editor

Dieses Attribut gibt an, mit welcher Aktivität dieses Layout standardmäßig verknüpft ist. Dadurch werden Funktionen im Editor oder in der Layoutvorschau aktiviert, für die Kenntnisse der Aktivität erforderlich sind. Dazu gehören z. B. das Layoutdesign in der Vorschau und das Einfügen von onClick-Handlern, die aus einer Quickfix generiert wurden (siehe Abbildung 2).

Quickfix für das {8/}-Attribut funktioniert nur, wenn Sie tools:context festgelegt haben.
Abbildung 2: Quickfix für das Attribut onClick funktioniert nur, wenn Sie tools:context festgelegt haben.

Sie können den Namen der Aktivitätsklasse mit demselben Punktpräfix wie in der Manifestdatei angeben (ausgenommen den vollständigen Paketnamen).

Beispiele:

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity" >

tools:itemCount

Vorgesehen für: <RecyclerView>

Wird verwendet von:Android Studio Layout Editor

Dieses Attribut gibt für ein bestimmtes RecyclerView-Objekt die Anzahl der Elemente an, die der Layout-Editor im Fenster Vorschau rendern soll.

Beispiele:

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:itemCount="3"/>

tools:layout

Vorgesehen für: <fragment>

Verwendet von:Android Studio Layout Editor

Dieses Attribut gibt an, welches Layout in der Layoutvorschau innerhalb des Fragments gezeichnet werden soll, da die Layoutvorschau den Aktivitätscode, der normalerweise das Layout anwendet, nicht ausführen kann.

Beispiele:

<fragment android:name="com.example.main.ItemListFragment"
    tools:layout="@layout/list_content" />

tools:listitem, tools:listheader und tools:listfooter

Vorgesehen für:<AdapterView> (und Unterklassen wie <ListView>)

Verwendet von:Android Studio Layout Editor

Mit diesen Attributen wird festgelegt, welches Layout in der Layoutvorschau für die Elemente, Kopf- und Fußzeilen einer Liste angezeigt werden soll. Alle Datenfelder im Layout werden mit numerischen Inhalten wie „Element 1“ gefüllt, damit sich die Listenelemente nicht wiederholen.

Beispiele:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:listitem="@layout/sample_list_item"
    tools:listheader="@layout/sample_list_header"
    tools:listfooter="@layout/sample_list_footer" />

tools:showIn

Vorgesehen für:Jeder Stamm-<View> in einem Layout, auf das durch <include> verwiesen wird

Verwendet von:Android Studio Layout Editor

Mit diesem Attribut können Sie mithilfe von <include> auf ein Layout verweisen, das dieses Layout verwendet. So können Sie die Datei in der Vorschau ansehen und bearbeiten, wie sie erscheint, wenn sie in ihr übergeordnetes Layout eingebettet ist.

Beispiele:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:showIn="@layout/activity_main" />

Jetzt zeigt die Layoutvorschau dieses TextView-Layout, wie es innerhalb des activity_main-Layouts erscheint.

tools:menu

Vorgesehen für:alle Root-<View>

Verwendet von:Android Studio Layout Editor

Dieses Attribut gibt an, welches Menü die Layoutvorschau in der App-Leiste anzeigt. Der Wert besteht aus einer oder mehreren durch Kommas getrennten Menü-IDs ohne @menu/ oder ein beliebiges ID-Präfix und ohne die Erweiterung .xml.

Beispiele:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:menu="menu1,menu2" />

tools:minValue, tools:maxValue

Vorgesehen für: <NumberPicker>

Verwendet von:Android Studio Layout Editor

Diese Attribute legen Mindest- und Höchstwerte für eine NumberPicker-Ansicht fest.

Beispiele:

<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/numberPicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:minValue="0"
    tools:maxValue="10" />

tools:openDrawer

Vorgesehen für: <DrawerLayout>

Verwendet von:Android Studio Layout Editor

Mit diesem Attribut können Sie ein DrawerLayout in der Vorschau öffnen.

Sie können auch ändern, wie der Layout-Editor das Layout rendert. Dazu übergeben Sie einen der folgenden Werte:

Tabelle 1 Werte, mit denen Sie ändern können, wie der Layout-Editor ein DrawerLayout rendert

KonstanteAntwortBeschreibung
end800005Objekt an das Ende seines Containers verschieben, ohne seine Größe zu ändern
left3Verschieben Sie das Objekt links neben seinen Container, ohne seine Größe zu ändern.
right5Verschieben Sie das Objekt an den rechten Rand seines Containers, ohne seine Größe zu ändern.
start800003Objekt an den Anfang seines Containers verschieben, ohne seine Größe zu ändern

Beispiele:

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:openDrawer="start" />

"@tools:sample/*" Ressourcen

Vorgesehen für:Jede Ansicht, die UI-Text oder -Bilder unterstützt.

Wird verwendet von:Android Studio Layout Editor

Mit diesem Attribut können Sie Platzhalterdaten oder Bilder in Ihre Ansicht einfügen. Wenn Sie beispielsweise testen möchten, wie sich Ihr Layout mit Text verhält, bevor Sie den UI-Text für Ihre App fertiggestellt haben, können Sie so einen Platzhaltertext verwenden:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="@tools:sample/lorem" />

In der folgenden Tabelle werden die Arten von Platzhalterdaten beschrieben, die Sie in Ihre Layouts einfügen können:

Tabelle 2 Platzhalterdaten für Layouts

AttributwertBeschreibung der Platzhalterdaten
@tools:sample/full_names Vollständige Namen, die zufällig aus der Kombination von @tools:sample/first_names und @tools:sample/last_names generiert werden
@tools:sample/first_names Häufige Vornamen
@tools:sample/last_names Gängige Nachnamen
@tools:sample/cities Namen von Städten aus aller Welt
@tools:sample/us_zipcodes Zufällig generierte US-Postleitzahlen
@tools:sample/us_phones Zufällig generierte Telefonnummern im folgenden Format: (800) 555-xxxx
@tools:sample/lorem Platzhaltertext auf Lateinisch
@tools:sample/date/day_of_week Zufällige Datums- und Uhrzeitangaben für das angegebene Format
@tools:sample/date/ddmmyy
@tools:sample/date/mmddyy
@tools:sample/date/hhmm
@tools:sample/date/hhmmss
@tools:sample/avatars Vektor-Drawables, die du als Profilavatare verwenden kannst
@tools:sample/backgrounds/scenic Bilder, die Sie als Hintergründe verwenden können

Attribute für Ressourcenverkleinerung

Mit den folgenden Attributen können Sie strenge Referenzprüfungen aktivieren und deklarieren, ob beim Verkleinern von Ressourcen bestimmte Ressourcen beibehalten oder verworfen werden sollen.

Zum Aktivieren der Ressourcenverkleinerung setzen Sie das Attribut shrinkResources in der Datei build.gradle auf true und minifyEnabled für die Codekomprimierung.

Beispiele:

Groovig

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

Kotlin

android {
    ...
    buildTypes {
        getByName("release") {
            isShrinkResources = true
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

tools:shrinkMode

Vorgesehen für: <resources>

Wird verwendet von:Tools mit Ressourcenverkleinerung erstellen

Mit diesem Attribut können Sie angeben, ob die Build-Tools Folgendes verwenden sollen:

  • Abgesicherter Modus:Behalten Sie alle Ressourcen bei, die explizit zitiert werden und auf die möglicherweise dynamisch mit einem Aufruf von Resources.getIdentifier() verwiesen wird.
  • Strenger Modus:Behalten Sie nur die Ressourcen bei, die im Code oder in anderen Ressourcen explizit zitiert werden.

Standardmäßig wird der abgesicherten Modus (shrinkMode="safe") verwendet. Um stattdessen den strikten Modus zu verwenden, fügen Sie shrinkMode="strict" in das <resources>-Tag ein, wie hier gezeigt:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

Wenn Sie den strikten Modus aktivieren, müssen Sie möglicherweise tools:keep verwenden, um entfernte Ressourcen beizubehalten, die Sie tatsächlich benötigen, und tools:discard verwenden, um noch mehr Ressourcen explizit zu entfernen.

Weitere Informationen finden Sie unter Ressourcen verkleinern.

tools:keep

Vorgesehen für: <resources>

Wird verwendet von:Tools mit Ressourcenverkleinerung erstellen

Wenn Sie die Ressourcenverkleinerung verwenden, um nicht verwendete Ressourcen zu entfernen, können Sie mit diesem Attribut Ressourcen angeben, die beibehalten werden sollen. Dies ist in der Regel der Fall, wenn während der Laufzeit indirekt auf sie verwiesen wird, z. B. durch die Übergabe eines dynamisch generierten Ressourcennamens an Resources.getIdentifier().

Erstellen Sie dafür eine XML-Datei in Ihrem Ressourcenverzeichnis (z. B. res/raw/keep.xml) mit einem <resources>-Tag und geben Sie jede Ressource, die im Attribut tools:keep beibehalten werden soll, als durch Kommas getrennte Liste an. Sie können das Sternchen als Platzhalter verwenden.

Beispiele:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />

Weitere Informationen finden Sie unter Ressourcen verkleinern.

tools:discard

Vorgesehen für: <resources>

Wird verwendet von:Tools mit Ressourcenverkleinerung erstellen

Wenn Sie die Ressourcenverkleinerung verwenden, um nicht verwendete Ressourcen zu entfernen, können Sie mit diesem Attribut Ressourcen angeben, die Sie manuell verwerfen möchten. Dies ist in der Regel der Fall, wenn auf die Ressource verwiesen wird, sich dies jedoch nicht auf Ihre Anwendung auswirkt, oder weil das Gradle-Plug-in fälschlicherweise abgeleitet hat, dass auf die Ressource verwiesen wird.

Erstellen Sie dafür eine XML-Datei in Ihrem Ressourcenverzeichnis (z. B. res/raw/keep.xml) mit einem <resources>-Tag und geben Sie jede zu verwerfende Ressource im Attribut tools:discard als durch Kommas getrennte Liste an. Sie können das Sternchen als Platzhalter verwenden.

Beispiele:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@layout/unused_1" />

Weitere Informationen finden Sie unter Ressourcen verkleinern.