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.](https://developer.android.google.cn/static/studio/images/write/tools-attribute-text_2x.png?authuser=6&hl=de)
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 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.](https://developer.android.google.cn/static/studio/images/write/tools-attribute-context_2x.png?authuser=6&hl=de)
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:
<androidx.recyclerview.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
Konstante | Antwort | Beschreibung |
---|---|---|
end | 800005 | Objekt an das Ende seines Containers verschieben, ohne seine Größe zu ändern |
left | 3 | Verschieben Sie das Objekt links neben seinen Container, ohne seine Größe zu ändern. |
right | 5 | Verschieben Sie das Objekt an den rechten Rand seines Containers, ohne seine Größe zu ändern. |
start | 800003 | Objekt 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
Attributwert | Beschreibung 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.