Drawable-Ressourcen

Eine Drawable-Ressource ist ein allgemeines Konzept für eine Grafik, die auf dem Bildschirm dargestellt werden kann und mit APIs wie getDrawable(int) abgerufen oder mit Attributen wie android:drawable und android:icon auf eine andere XML-Ressource angewendet werden kann. Es gibt verschiedene Arten von Drawables:

Bitmapdatei
Eine Bitmapgrafikdatei (PNG, WEBP, JPG oder GIF) Erstellt ein BitmapDrawable.
Datei mit neun Patches
Eine PNG-Datei mit ausdehnbaren Bereichen, damit die Größe von Bildern je nach Inhalt angepasst werden kann (.9.png). Erstellt eine NinePatchDrawable.
Ebenenliste
Ein Drawable, das eine Reihe anderer Drawables verwaltet. Sie werden in Array-Reihenfolge gezeichnet, sodass das Element mit dem größten Index ganz oben angezeigt wird. Erstellt ein LayerDrawable.
Liste der Bundesstaaten
Eine XML-Datei, die auf verschiedene Bitmapgrafiken für verschiedene Zustände verweist, z. B. um ein anderes Bild beim Tippen auf eine Schaltfläche zu verwenden. Erstellt ein StateListDrawable.
Levelliste
Eine XML-Datei, die ein Drawable definiert, das eine Reihe alternativer Drawables verwaltet, denen jeweils einen maximalen numerischen Wert zugewiesen ist. Erstellt ein LevelListDrawable.
Drehbuch mit Wechsel
Eine XML-Datei, die ein Drawable definiert, das zwischen zwei Drawable-Ressourcen überblenden kann. Erstellt ein TransitionDrawable.
Drawable
Eine XML-Datei, die ein Drawable definiert, das ein anderes Drawable um eine bestimmte Entfernung einfügt. Dies ist nützlich, wenn eine Ansicht ein Hintergrund-Drawable benötigt, das kleiner als die tatsächlichen Begrenzungen der Ansicht ist.
Clip-Drawable
Eine XML-Datei, die ein Drawable definiert, das ein anderes Drawable basierend auf dem aktuellen Levelwert dieses Drawable zuschneidet. Erstellt ein ClipDrawable.
Drehbuch skalieren
Eine XML-Datei, die ein Drawable definiert, das die Größe eines anderen Drawable basierend auf seinem aktuellen Levelwert ändert. Erstellt ein ScaleDrawable
Shape-Drawable.
Eine XML-Datei, in der eine geometrische Form definiert wird, einschließlich Farben und Farbverläufe. Erstellt ein GradientDrawable.

Informationen zum Erstellen eines AnimationDrawable finden Sie im Dokument zu Animationsressourcen.

Hinweis:Eine Farbressource kann auch als Drawable in XML verwendet werden. Wenn du beispielsweise eine Drawable mit Statusliste erstellst, kannst du auf eine Farbressource für das Attribut android:drawable (android:drawable="@color/green") verweisen.

Bitmap

Ein Bitmapbild. Android unterstützt Bitmap-Dateien in den folgenden Formaten: PNG (bevorzugt), WEBP (bevorzugt, API-Level 17 oder höher erforderlich), JPG (akzeptabel), GIF (nicht empfohlen).

Sie können direkt auf eine Bitmapdatei verweisen und den Dateinamen als Ressourcen-ID verwenden, oder Sie können eine Alias-Ressourcen-ID in XML erstellen.

Hinweis:Bitmapdateien können während des Build-Prozesses mit dem aapt-Tool automatisch mit einer verlustfreien Bildkomprimierung optimiert werden. Beispielsweise kann eine farbige PNG-Datei, die nicht mehr als 256 Farben erfordert, in ein 8-Bit-PNG mit einer Farbpalette konvertiert werden. Dies führt zu einem Bild von gleicher Qualität, das weniger Arbeitsspeicher benötigt.

Die in diesem Verzeichnis gespeicherten Binärdateien für das Image können sich also während des Builds ändern. Wenn Sie ein Bild als Bitstream lesen und in eine Bitmap konvertieren möchten, legen Sie die Bilder stattdessen im Ordner res/raw/ ab, in dem sie nicht optimiert sind.

Bitmapdatei

Eine Bitmapdatei ist eine PNG-, WEBP-, JPG- oder GIF-Datei. Android erstellt für jede dieser Dateien eine Drawable-Ressource, wenn Sie sie im Verzeichnis res/drawable/ speichern.

Dateispeicherort:
res/drawable/filename.png (.png, .webp, .jpg oder .gif)
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine BitmapDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Beispiel:
Wenn ein Bild unter res/drawable/myimage.png gespeichert ist, wird das Bild durch diese Layout-XML auf eine Ansicht angewendet:
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/myimage" />

Mit dem folgenden Anwendungscode wird das Bild als Drawable abgerufen:

Kotlin

val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.myimage, null)

Java

Resources res = getResources();
Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.myimage, null);
Siehe auch:

XML-Bitmap

Eine XML-Bitmap ist eine im XML-Format definierte Ressource, die auf eine Bitmapdatei verweist. Der Effekt ist ein Alias für eine Roh-Bitmapdatei. In der XML-Datei können zusätzliche Eigenschaften für die Bitmap angegeben werden, z. B. Dithering und Tiling.

Hinweis:Sie können ein <bitmap>-Element als untergeordnetes Element eines <item>-Elements verwenden. Wenn du beispielsweise eine Statusliste oder eine Ebenenliste erstellst, kannst du das Attribut android:drawable von einem <item>-Element ausschließen und darin ein <bitmap>-Element verschachteln, das das Drawable-Element definiert.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine BitmapDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:antialias=["true" | "false"]
    android:dither=["true" | "false"]
    android:filter=["true" | "false"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                      "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:mipMap=["true" | "false"]
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
Elemente:
<bitmap>
Erforderlich. Definiert die Bitmapquelle und ihre Eigenschaften.

Attribute:

xmlns:android
String Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein. Dies ist nur erforderlich, wenn <bitmap> das Stammelement ist. Es wird nicht benötigt, wenn <bitmap> in einem <item> verschachtelt ist.
android:src
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource.
android:antialias
Boolescher Wert. Aktiviert oder deaktiviert das Antialiasing.
android:dither
Boolescher Wert. Aktiviert oder deaktiviert das Dithering der Bitmap, wenn die Bitmap nicht dieselbe Pixelkonfiguration wie der Bildschirm hat, z. B. eine ARGB 8888-Bitmap auf einem RGB 565-Bildschirm.
android:filter
Boolescher Wert. Aktiviert oder deaktiviert die Bitmap-Filterung. Filtern wird verwendet, wenn die Bitmap verkleinert oder gestreckt wird, um ihr Aussehen zu glätten.
android:gravity
Keyword. Definiert die Gravitation der Bitmap. Die Gravitation gibt an, wo das Drawable im Container positioniert werden soll, wenn die Bitmap kleiner als der Container ist.

Muss einer oder mehrere der folgenden konstanten Werte sein, getrennt durch |:

AntwortBeschreibung
top Platzieren Sie das Objekt oben in seinem Container, ohne seine Größe zu ändern.
bottom Lege das Objekt auf den Boden des Behälters, ohne seine Größe zu ändern.
left Platzieren Sie das Objekt am linken Rand des Containers, ohne seine Größe zu ändern.
right Platzieren Sie das Objekt am rechten Rand des Containers, ohne seine Größe zu ändern.
center_vertical Platzieren Sie das Objekt vertikal mittig in seinem Container, ohne seine Größe zu ändern.
fill_vertical Vergrößern Sie bei Bedarf die vertikale Größe des Objekts, damit es seinen Behälter vollständig ausfüllt.
center_horizontal Platzieren Sie das Objekt in der horizontalen Mitte des Containers, ohne seine Größe zu ändern.
fill_horizontal Vergrößern Sie bei Bedarf die horizontale Größe des Objekts, damit es seinen Behälter vollständig ausfüllt.
center Platzieren Sie das Objekt sowohl in der vertikalen als auch in der horizontalen Achse in der Mitte seines Containers, ohne seine Größe zu ändern.
fill Vergrößern Sie bei Bedarf die horizontale und vertikale Größe des Objekts, damit es seinen Container vollständig füllt. Das ist die Standardeinstellung.
clip_vertical Zusätzliche Option, die so festgelegt werden kann, dass der obere und/oder untere Rand des untergeordneten Elements an die Containergrenzen begrenzt wird. Der Clip basiert auf der vertikalen Schwerkraft: Eine obere Gravitation schneidet den unteren Rand, eine untere Schwerkraft am oberen Rand ab und keine an beiden Kanten.
clip_horizontal Zusätzliche Option, die so festgelegt werden kann, dass der linke und/oder rechte Rand des untergeordneten Elements an seine Containergrenzen begrenzt wird. Der Clip basiert auf der horizontalen Gravitation: Eine linke Gravitation schließt die rechte Kante, eine rechte Gravitation an der linken Kante ab, aber keiner der Clips wird an beiden Kanten abgeschnitten.
android:mipMap
Boolescher Wert. Aktiviert oder deaktiviert den Mipmap-Hinweis. Weitere Informationen findest du in den setHasMipMap(). Der Standardwert ist "false".
android:tileMode
Keyword. Definiert den Kachelmodus. Wenn der Kachelmodus aktiviert ist, wird die Bitmap wiederholt. Die Schwerkraft wird ignoriert, wenn der Kachelmodus aktiviert ist.

Muss einer der folgenden konstanten Werte sein:

AntwortBeschreibung
disabled Die Bitmap darf nicht gekachelt werden. Dies ist der Standardwert.
clamp Die Kantenfarbe replizieren, wenn der Shader außerhalb seiner ursprünglichen Begrenzungen zeichnet
repeat Wiederholen Sie das Bild des Shaders horizontal und vertikal.
mirror Wiederholen Sie das Bild des Shaders horizontal und vertikal und wechseln Sie abwechselnd Spiegelbilder, damit benachbarte Bilder immer zusammenpassen.
Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon"
    android:tileMode="repeat" />
Siehe auch:

Neun-Patch

Ein NinePatch ist ein PNG-Bild, in dem Sie dehnbare Regionen definieren können, die Android skaliert, wenn der Inhalt in der Ansicht die normalen Bildgrenzen überschreitet. In der Regel weisen Sie diesen Bildtyp als Hintergrund einer Ansicht zu, in der mindestens eine Dimension auf "wrap_content" festgelegt ist.

Wenn die Ansicht vergrößert wird, um den Inhalt unterzubringen, wird das Bild mit neun Patches ebenfalls an die Größe der Ansicht angepasst. Ein Beispiel für die Verwendung eines Images mit neun Patches ist der Hintergrund, der vom standardmäßigen Button-Widget von Android verwendet wird. Dieses Widget muss sich so strecken, dass sich der Text (oder das Bild) in der Schaltfläche befindet.

Wie bei einer normalen Bitmap können Sie direkt auf eine Neun-Patch-Datei oder über eine per XML definierte Ressource verweisen.

Eine ausführliche Erläuterung zum Erstellen einer Datei mit neun Patches und dehnbaren Regionen finden Sie unter Bitmaps mit anpassbarer Größe erstellen (9-Patch-Dateien).

Datei mit neun Patches

Dateispeicherort:
res/drawable/filename.9.png
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine NinePatchDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Beispiel:
Wenn ein Bild unter res/drawable/myninepatch.9.png gespeichert ist, wendet diese Layout-XML den neun Patches auf eine Ansicht an:
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/myninepatch" />
Siehe auch:

XML 9-Patch

Ein Neun-Patch-XML ist eine im XML-Format definierte Ressource, die auf eine Neun-Patch-Datei verweist. Die XML-Datei kann das Dithering für das Bild angeben.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine NinePatchDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:dither=["true" | "false"] />
Elemente:
<nine-patch>
Erforderlich. Definiert die Neun-Patch-Quelle und ihre Eigenschaften.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
android:src
Drawable-Ressource. Erforderlich. Verweis auf eine Neun-Patch-Datei.
android:dither
Boolescher Wert. Aktiviert oder deaktiviert das Dithering der Bitmap, wenn die Bitmap nicht dieselbe Pixelkonfiguration wie der Bildschirm hat, z. B. eine ARGB 8888-Bitmap auf einem RGB 565-Bildschirm.
Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/myninepatch"
    android:dither="false" />

Ebenenliste

Ein LayerDrawable ist ein Drawable-Objekt, das ein Array anderer Drawables verwaltet. Jedes Drawable in der Liste wird in der Reihenfolge der Liste gezeichnet. Das letzte Drawable in der Liste wird oben gezeichnet.

Jedes Drawable wird durch ein <item>-Element innerhalb eines einzelnen <layer-list>-Elements dargestellt.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine LayerDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</layer-list>
Elemente:
<layer-list>
Erforderlich. Dies muss das Stammelement sein. Enthält ein oder mehrere <item>-Elemente.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
<item>
Definiert ein Drawable, das auf der Ebene als Drawable platziert werden soll, an einer durch seine Attribute definierten Position. Muss einem <layer-list>-Element untergeordnet sein. Akzeptiert untergeordnete <bitmap>-Elemente.

Attribute:

android:drawable
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource.
android:id
Ressourcen-ID. Eine eindeutige Ressourcen-ID für dieses Drawable. Verwenden Sie das Formular "@+id/name", um eine neue Ressourcen-ID für dieses Element zu erstellen. Das Plus-Symbol zeigt an, dass dies als neue ID erstellt wurde. Du kannst diese ID verwenden, um das Drawable mit View.findViewById() oder Activity.findViewById() abzurufen und zu ändern.
android:top
Dimension: Der obere Offset als Dimensionswert oder Dimensionsressource.
android:right
Dimension: Den rechten Offset, als Dimensionswert oder Dimensionsressource.
android:bottom
Dimension: Der untere Offset als Dimensionswert oder Dimensionsressource.
android:left
Dimension: Der linke Offset als Dimensionswert oder Dimensionsressource.

Alle Drawable-Elemente werden standardmäßig an die Größe der Ansicht skaliert, in der sie enthalten sind. Wenn Sie Ihre Bilder also an verschiedenen Positionen in einer Ebenenliste platzieren, wird die Ansicht möglicherweise größer und einige Bilder werden entsprechend skaliert.

Um Elemente in der Liste nicht zu skalieren, kannst du ein <bitmap>-Element innerhalb des <item>-Elements verwenden, um das Drawable anzugeben und die Gravitation auf etwas zu definieren, das nicht skaliert werden kann, z. B. "center". Die folgende <item> definiert beispielsweise ein Element, das an seine Containeransicht angepasst wird:

<item android:drawable="@drawable/image" />

Im folgenden Beispiel wird ein <bitmap>-Element mit Schwerkraft verwendet, um Skalierung zu vermeiden:

<item>
  <bitmap android:src="@drawable/image"
          android:gravity="center" />
</item>
Beispiel:
XML-Datei gespeichert unter res/drawable/layers.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

In diesem Beispiel wird ein verschachteltes <bitmap>-Element verwendet, um die Drawable-Ressource für jedes Element mit einer "center"-Schwerkraft zu definieren. Dadurch wird sichergestellt, dass keines der Bilder für die Größe des Containers skaliert wird, da die Größenänderung durch die versetzten Bilder verursacht wird.

Diese Layout-XML wendet das Drawable auf eine Ansicht an:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

Das Ergebnis ist ein Stapel von Bildern mit zunehmendem Offset:

Siehe auch:

Liste der Bundesstaaten

Ein StateListDrawable ist ein in XML definiertes Drawable-Objekt, das je nach Zustand des Objekts mehrere Bilder verwendet, um dieselbe Grafik darzustellen. Beispielsweise kann der Status eines Button-Widgets angetippt oder fokussiert werden oder keiner von beiden. Wenn Sie ein Drawable für die Statusliste verwenden, können Sie für jeden Status ein anderes Hintergrundbild bereitstellen.

Sie beschreiben die Liste der Bundesstaaten in einer XML-Datei. Jede Grafik wird durch ein <item>-Element innerhalb eines einzelnen <selector>-Elements dargestellt. Jedes <item> verwendet verschiedene Attribute, um den Zustand zu beschreiben, in dem es als Grafik für das Drawable verwendet wird.

Bei jeder Statusänderung wird die Statusliste von oben nach unten durchlaufen und das erste Element, das dem aktuellen Status entspricht, wird verwendet. Die Auswahl basiert nicht auf der „besten Übereinstimmung“, sondern auf dem ersten Element, das die Mindestkriterien des Bundesstaates erfüllt.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine StateListDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>
Elemente:
<selector>
Erforderlich. Dies muss das Stammelement sein. Enthält ein oder mehrere <item>-Elemente.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
android:constantSize
Boolescher Wert. Dieser Wert ist „True“, wenn die gemeldete interne Größe des Drawable konstant bleibt, wenn sich der Status ändert (die Größe ist das Maximum aller Zustände). Ist „false“, wenn die Größe je nach aktuellem Status variiert. Der Standardwert ist "false".
android:dither
Boolescher Wert. „True“, um das Dithering der Bitmap zu aktivieren, wenn die Bitmap nicht dieselbe Pixelkonfiguration wie der Bildschirm hat, z. B. eine ARGB 8888-Bitmap auf einem RGB 565-Bildschirm, und „false“, um das Dithering zu deaktivieren. Der Standardwert ist „true“.
android:variablePadding
Boolescher Wert. „True“, wenn sich das Padding des Drawables basierend auf dem aktuell ausgewählten Status ändert; „false“, wenn das Padding basierend auf der maximalen Auffüllung aller Zustände gleich bleiben muss. Wenn Sie diese Funktion aktivieren möchten, müssen Sie das Layout anpassen, wenn sich der Status ändert. Dies wird oft nicht unterstützt. Der Standardwert ist "false".
<item>
Definiert ein Drawable, das in bestimmten Stadien verwendet werden soll, wie durch seine Attribute beschrieben. Muss einem <selector>-Element untergeordnet sein.

Attribute:

android:drawable
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource.
android:state_pressed
Boolescher Wert. „True“, wenn dieses Element beim Antippen des Objekts verwendet wird, z. B. beim Berühren einer Schaltfläche. „false“, wenn dieses Element im Standardzustand verwendet wird, also nicht angetippt wird.
android:state_focused
Boolescher Wert. „True“, wenn dieses Element verwendet wird, wenn das Objekt einen Eingabefokus hat, z. B. wenn der Nutzer eine Texteingabe auswählt. „false“, wenn dieses Element im Standardzustand verwendet wird, aber nicht im Fokus.
android:state_hovered
Boolescher Wert. „True“, wenn dieses Element verwendet wird, wenn der Mauszeiger auf das Objekt bewegt wird. „false“, wenn das Element im Standardstatus verwendet wird, bei dem der Mauszeiger nicht bewegt wird. Oftmals kann es sich bei diesem Drawable um dasselbe Drawable handeln, das für den Status „Focus“ (fokussiert) verwendet wurde.

Eingeführt in API-Level 14.

android:state_selected
Boolescher Wert. „True“, wenn dieses Element verwendet wird, wenn das Objekt der aktuellen Nutzerauswahl entspricht, wenn Sie mit einer Richtungssteuerung navigieren, z. B. beim Navigieren durch eine Liste mit einem Steuerkreuz; „false“, wenn dieses Element verwendet wird, wenn das Objekt nicht ausgewählt ist.

Der ausgewählte Status wird verwendet, wenn android:state_focused nicht ausreicht, z. B. wenn der Fokus auf der Listenansicht liegt und ein darin enthaltenes Element mit einem Steuerkreuz ausgewählt wird.

android:state_checkable
Boolescher Wert. „True“, wenn dieses Element verwendet wird, wenn das Objekt auswählbar ist, und „false“, wenn es verwendet wird, wenn das Objekt nicht auswählbar ist. Nur nützlich, wenn das Objekt zwischen einem auswählbaren und einem nicht auswählbaren Widget wechseln kann.
android:state_checked
Boolescher Wert. „True“, wenn dieses Element verwendet wird, wenn das Objekt ausgewählt ist, und „false“, wenn es verwendet wird, wenn das Objekt nicht ausgewählt ist.
android:state_enabled
Boolescher Wert. "True", wenn dieses Element bei aktiviertem Objekt verwendet wird und somit Touch- oder Klickereignisse empfangen kann. "false", wenn es bei deaktiviertem Objekt verwendet wird.
android:state_activated
Boolescher Wert. „True“, wenn dieses Element verwendet wird, wenn das Objekt als persistente Auswahl aktiviert wird, z. B. um das zuvor ausgewählte Listenelement in einer persistenten Navigationsansicht „hervorzuheben“; „false“, wenn es verwendet wird, wenn das Objekt nicht aktiviert ist.

Eingeführt in API-Level 11.

android:state_window_focused
Boolescher Wert. „True“, wenn dieses Element verwendet wird, wenn das Anwendungsfenster im Fokus ist, die Anwendung also im Vordergrund ausgeführt wird. „false“, wenn dieses Element verwendet wird, wenn das Anwendungsfenster nicht im Fokus ist, z. B. wenn die Benachrichtigungsleiste nach unten gezogen wird oder ein Dialogfeld angezeigt wird.

Hinweis:Android wendet das erste Element in der Statusliste an, das dem aktuellen Status des Objekts entspricht. Wenn also das erste Element in der Liste keines der vorherigen Statusattribute enthält, wird es jedes Mal angewendet. Aus diesem Grund soll der Standardwert immer der letzte sein, wie im folgenden Beispiel gezeigt.

Beispiel:
XML-Datei gespeichert unter res/drawable/button.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

Diese Layout-XML wendet das Drawable der Statusliste auf eine Schaltfläche an:

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />
Siehe auch:

Levelliste

Ein Drawable, das eine Anzahl alternativer Drawables verwaltet, jedem mit einem maximalen numerischen Wert zugewiesen ist. Wenn du den Levelwert des Drawable mit setLevel() festlegst, wird die Drawable-Ressource in der Ebenenliste geladen, deren android:maxLevel-Wert größer oder gleich dem an die Methode übergebenen Wert ist.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine LevelListDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<level-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/drawable_resource"
        android:maxLevel="integer"
        android:minLevel="integer" />
</level-list>
Elemente:
<level-list>
Erforderlich. Dies muss das Stammelement sein. Enthält ein oder mehrere <item>-Elemente.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
<item>
Definiert ein Drawable, das auf einer bestimmten Ebene verwendet werden soll.

Attribute:

android:drawable
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource, die eingefügt werden soll.
android:maxLevel
Ganzzahl. Die maximal zulässige Stufe für dieses Element.
android:minLevel
Ganzzahl. Das ist die niedrigste zulässige Stufe für dieses Element.
Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/status_off"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/status_on"
        android:maxLevel="1" />
</level-list>

Nachdem dies auf ein View angewendet wurde, kann die Ebene mit setLevel() oder setImageLevel() geändert werden.

Siehe auch:

Drawable mit Übergang

Ein TransitionDrawable ist ein Drawable-Objekt, das zwischen zwei anderen Drawable-Ressourcen überblenden kann.

Jedes Drawable wird durch ein <item>-Element innerhalb eines einzelnen <transition>-Elements dargestellt. Es werden maximal zwei Elemente unterstützt. Rufen Sie zum Weiterleiten startTransition() auf. Rufen Sie reverseTransition() auf, um rückwärts zu wechseln.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine TransitionDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</transition>
Elemente:
<transition>
Erforderlich. Dies muss das Stammelement sein. Enthält ein oder mehrere <item>-Elemente.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
<item>
Definiert ein Drawable, das als Teil des Drawable-Übergangs verwendet werden soll. Muss einem <transition>-Element untergeordnet sein. Akzeptiert untergeordnete <bitmap>-Elemente.

Attribute:

android:drawable
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource.
android:id
Ressourcen-ID. Eine eindeutige Ressourcen-ID für dieses Drawable. Verwenden Sie das Formular "@+id/name", um eine neue Ressourcen-ID für dieses Element zu erstellen. Das Plus-Symbol zeigt an, dass dies als neue ID erstellt wurde. Du kannst diese ID verwenden, um das Drawable mit View.findViewById() oder Activity.findViewById() abzurufen und zu ändern.
android:top
Ganzzahl. Der obere Offset in Pixeln.
android:right
Ganzzahl. Der rechte Offset in Pixeln.
android:bottom
Ganzzahl. Der untere Offset in Pixeln.
android:left
Ganzzahl. Der linke Offset in Pixeln.
Beispiel:
XML-Datei gespeichert unter res/drawable/transition.xml:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/on" />
    <item android:drawable="@drawable/off" />
</transition>

Diese Layout-XML wendet das Drawable auf eine Ansicht an:

<ImageButton
    android:id="@+id/button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/transition" />

Und der folgende Code führt einen 500-ms-Übergang vom ersten zum zweiten Element aus:

Kotlin

val button: ImageButton = findViewById(R.id.button)
val drawable: Drawable = button.drawable
if (drawable is TransitionDrawable) {
    drawable.startTransition(500)
}

Java

ImageButton button = (ImageButton) findViewById(R.id.button);
Drawable drawable = button.getDrawable();
if (drawable instanceof TransitionDrawable) {
    ((TransitionDrawable) drawable).startTransition(500);
}
Siehe auch:

Inset-Drawable

Ein in XML definiertes Drawable, das ein anderes Drawable um eine bestimmte Entfernung einfügt. Dies ist nützlich, wenn eine Ansicht einen Hintergrund benötigt, der kleiner als die tatsächlichen Begrenzungen der Ansicht ist.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine InsetDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:insetTop="dimension"
    android:insetRight="dimension"
    android:insetBottom="dimension"
    android:insetLeft="dimension" />
Elemente:
<inset>
Erforderlich. Definiert das Inset-Drawable. Dies muss das Stammelement sein.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
android:drawable
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource, die eingefügt werden soll.
android:insetTop
Dimension: Den obersten Bereich als Dimensionswert oder Dimensionsressource.
android:insetRight
Dimension: Den rechten Teil, als Dimensionswert oder Dimensionsressource.
android:insetBottom
Dimension: Den unteren Bereich als Dimensionswert oder Dimensionsressource.
android:insetLeft
Dimension: Linker Eintrag als Dimensionswert oder Dimensionsressource.
Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/background"
    android:insetTop="10dp"
    android:insetLeft="10dp" />
Siehe auch:

Clip-Drawable

Ein in XML definiertes Drawable, das ein anderes Drawable basierend auf dem aktuellen Level dieses Drawables zuschneidet. Sie können festlegen, in welchem Umfang die Breite und Höhe des untergeordneten Drawable je nach Etage abgeschnitten werden sollen. Außerdem lässt sich anhand der Schwerkraft steuern, wo es im Gesamtcontainer platziert wird. am häufigsten zur Implementierung von Fortschrittsbalken.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine ClipDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<clip
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:clipOrientation=["horizontal" | "vertical"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                     "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                     "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
Elemente:
<clip>
Erforderlich. Legt das Drawable für den Clip fest. Dies muss das Stammelement sein.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
android:drawable
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource, die abgeschnitten werden soll.
android:clipOrientation
Keyword. Die Ausrichtung des Clips.

Muss einer der folgenden konstanten Werte sein:

AntwortBeschreibung
horizontal Schneiden Sie das Drawable horizontal zu.
vertical Befestige das Drawable vertikal.
android:gravity
Keyword. Gibt an, wo im Drawable ein Clip eingefügt werden soll.

Muss einer oder mehrere der folgenden konstanten Werte sein, getrennt durch |:

AntwortBeschreibung
top Platzieren Sie das Objekt oben in seinem Container, ohne seine Größe zu ändern. Wenn clipOrientation auf "vertical" gesetzt ist, wird das Element am unteren Rand des Drawables abgeschnitten.
bottom Lege das Objekt auf den Boden des Behälters, ohne seine Größe zu ändern. Wenn clipOrientation auf "vertical" gesetzt ist, wird das Element oben im Drawable abgeschnitten.
left Platzieren Sie das Objekt am linken Rand des Containers, ohne seine Größe zu ändern. Das ist die Standardeinstellung. Wenn clipOrientation den Wert "horizontal" hat, erfolgt das Abschneiden auf der rechten Seite des Drawables.
right Platzieren Sie das Objekt am rechten Rand des Containers, ohne seine Größe zu ändern. Wenn clipOrientation den Wert "horizontal" hat, erfolgt das Abschneiden auf der linken Seite des Drawables.
center_vertical Platzieren Sie das Objekt vertikal mittig in seinem Container, ohne seine Größe zu ändern. Beschneidung funktioniert genauso wie die Schwerkraft bei "center".
fill_vertical Vergrößern Sie bei Bedarf die vertikale Größe des Objekts, damit es seinen Behälter vollständig ausfüllt. Wenn clipOrientation auf "vertical" gesetzt ist, erfolgt kein Clipping, da das Drawable den vertikalen Bereich ausfüllt (es sei denn, die Drawable-Ebene ist 0 – in diesem Fall ist es nicht sichtbar).
center_horizontal Platzieren Sie das Objekt horizontal mittig in seinem Container, ohne seine Größe zu ändern. Beschneidung funktioniert genauso wie die Schwerkraft bei "center".
fill_horizontal Vergrößern Sie bei Bedarf die horizontale Größe des Objekts, damit es seinen Behälter vollständig ausfüllt. Wenn clipOrientation auf "horizontal" gesetzt ist, erfolgt keine Begrenzung, weil das Drawable den horizontalen Bereich ausfüllt (es sei denn, die Drawable-Ebene ist 0, sodass sie nicht sichtbar ist).
center Platzieren Sie das Objekt sowohl in der vertikalen als auch in der horizontalen Achse in der Mitte seines Containers, ohne seine Größe zu ändern. Wenn clipOrientation den Wert "horizontal" hat, erfolgt die Begrenzung links und rechts. Wenn clipOrientation den Wert "vertical" hat, wird oben und unten abgeschnitten.
fill Vergrößern Sie bei Bedarf die horizontale und vertikale Größe des Objekts, damit es seinen Container vollständig füllt. Es erfolgt keine Beschneidung, da das Drawable den horizontalen und vertikalen Raum ausfüllt (es sei denn, die Ebene für das Drawable ist 0 und ist dann nicht sichtbar).
clip_vertical Zusätzliche Option, die so festgelegt werden kann, dass der obere und/oder untere Rand des untergeordneten Elements an die Containergrenzen begrenzt wird. Der Clip basiert auf der vertikalen Schwerkraft: Eine obere Gravitation schneidet den unteren Rand, eine untere Schwerkraft am oberen Rand ab und keine an beiden Kanten.
clip_horizontal Zusätzliche Option, die so festgelegt werden kann, dass der linke und/oder rechte Rand des untergeordneten Elements an seine Containergrenzen begrenzt wird. Der Clip basiert auf der horizontalen Gravitation: Eine linke Gravitation schließt die rechte Kante, eine rechte Gravitation an der linken Kante ab, aber keiner der Clips wird an beiden Kanten abgeschnitten.
Beispiel:
XML-Datei gespeichert unter res/drawable/clip.xml:
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/android"
    android:clipOrientation="horizontal"
    android:gravity="left" />

Mit der folgenden Layout-XML wird das Drawable-Format des Clips auf eine Ansicht angewendet:

<ImageView
    android:id="@+id/image"
    android:src="@drawable/clip"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

Mit dem folgenden Code wird das Drawable abgerufen und das Abschneiden erhöht, um das Bild schrittweise einzublenden:

Kotlin

val imageview: ImageView = findViewById(R.id.image)
val drawable: Drawable = imageview.background
if (drawable is ClipDrawable) {
    drawable.level = drawable.level + 1000
}

Java

ImageView imageview = (ImageView) findViewById(R.id.image);
Drawable drawable = imageview.getBackground();
if (drawable instanceof ClipDrawable) {
    ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000);
}

Je höher der Pegel, desto weniger Beschnitt wird reduziert und das Bild wird langsam sichtbar. Hier ist es auf einer Ebene von 7.000:

Hinweis:Die Standardebene ist 0. Dieser Wert wird vollständig zugeschnitten, sodass das Bild nicht sichtbar ist. Bei einer Stufe von 10.000 wird das Bild nicht zugeschnitten und ist vollständig sichtbar.

Siehe auch:

Drawable skalieren

Ein in XML definiertes Drawable, das die Größe eines anderen Drawable basierend auf dessen aktueller Ebene ändert.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine ScaleDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                          "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                          "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:scaleHeight="percentage"
    android:scaleWidth="percentage" />
Elemente:
<scale>
Erforderlich. Definiert das Scale-Drawable. Dies muss das Stammelement sein.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
android:drawable
Drawable-Ressource. Erforderlich. Verweis auf eine Drawable-Ressource.
android:scaleGravity
Keyword. Gibt die Gravitationsposition nach der Skalierung an.

Muss einer oder mehrere der folgenden konstanten Werte sein, getrennt durch |:

AntwortBeschreibung
top Platzieren Sie das Objekt oben in seinem Container, ohne seine Größe zu ändern.
bottom Lege das Objekt auf den Boden des Behälters, ohne seine Größe zu ändern.
left Platzieren Sie das Objekt am linken Rand des Containers, ohne seine Größe zu ändern. Das ist die Standardeinstellung.
right Platzieren Sie das Objekt am rechten Rand des Containers, ohne seine Größe zu ändern.
center_vertical Platzieren Sie das Objekt vertikal mittig in seinem Container, ohne seine Größe zu ändern.
fill_vertical Vergrößern Sie bei Bedarf die vertikale Größe des Objekts, damit es seinen Behälter vollständig ausfüllt.
center_horizontal Platzieren Sie das Objekt horizontal mittig in seinem Container, ohne seine Größe zu ändern.
fill_horizontal Vergrößern Sie bei Bedarf die horizontale Größe des Objekts, damit es seinen Behälter vollständig ausfüllt.
center Platzieren Sie das Objekt sowohl in der vertikalen als auch in der horizontalen Achse in der Mitte seines Containers, ohne seine Größe zu ändern.
fill Vergrößern Sie bei Bedarf die horizontale und vertikale Größe des Objekts, damit es seinen Container vollständig füllt.
clip_vertical Zusätzliche Option, die so festgelegt werden kann, dass der obere und/oder untere Rand des untergeordneten Elements an die Containergrenzen begrenzt wird. Der Clip basiert auf der vertikalen Schwerkraft: Eine obere Gravitation schneidet den unteren Rand, eine untere Schwerkraft am oberen Rand ab und keine an beiden Kanten.
clip_horizontal Zusätzliche Option, die so festgelegt werden kann, dass der linke und/oder rechte Rand des untergeordneten Elements an seine Containergrenzen begrenzt wird. Der Clip basiert auf der horizontalen Gravitation: Eine linke Gravitation schließt die rechte Kante, eine rechte Gravitation an der linken Kante ab, aber keiner der Clips wird an beiden Kanten abgeschnitten.
android:scaleHeight
Prozentsatz. Die Skalierungshöhe, ausgedrückt als Prozentsatz der Drawable-Grenze. Das Format des Werts ist XX%, z. B. 100% oder 12,5%.
android:scaleWidth
Prozentsatz. Die Skalierungsbreite, ausgedrückt als Prozentsatz der Drawable-Grenze. Das Format des Werts ist XX%, z. B. 100% oder 12,5%.
Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/logo"
    android:scaleGravity="center_vertical|center_horizontal"
    android:scaleHeight="80%"
    android:scaleWidth="80%" />
Siehe auch:

Form-Drawable

Dies ist eine generische Form, die in XML definiert ist.

Dateispeicherort:
res/drawable/filename.xml
Der Dateiname ist die Ressourcen-ID.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine GradientDrawable
Ressourcenreferenz:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="float"
        android:centerY="float"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>
Elemente:
<shape>
Erforderlich. Das Drawable-Format Dies muss das Stammelement sein.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace. Dieser muss "http://schemas.android.com/apk/res/android" sein.
android:shape
Keyword. Definiert den Formtyp. Gültige Werte sind folgende:
AntwortBeschreibung
"rectangle" Ein Rechteck, das die enthaltende Ansicht ausfüllt. Das ist die Standardform.
"oval" Eine ovale Form, die den Abmessungen der enthaltenden Ansicht entspricht.
"line" Eine horizontale Linie, die die Breite der enthaltenden Ansicht einnimmt. Für diese Form muss das Element <stroke> die Breite der Linie definieren.
"ring" Eine Ringform.

Die folgenden Attribute werden nur verwendet, wenn android:shape="ring":

android:innerRadius
Dimension: Der Radius für den inneren Teil des Rings (das Loch in der Mitte) als Dimensionswert oder Dimensionsressource.
android:innerRadiusRatio
Gleitkommazahl. Der Radius für den inneren Teil des Rings, ausgedrückt als Verhältnis der Breite des Rings. Wenn beispielsweise android:innerRadiusRatio="5" festgelegt ist, entspricht der innere Radius der Breite des Rings geteilt durch 5. Dieser Wert wird von android:innerRadius überschrieben. Der Standardwert ist 9.
android:thickness
Dimension: Die Dicke des Rings als Dimensionswert oder als Dimensionsressource.
android:thicknessRatio
Gleitkommazahl. Die Dicke des Rings, ausgedrückt als Verhältnis zur Breite des Rings. Bei android:thicknessRatio="2" entspricht die Dicke beispielsweise der Breite des Rings geteilt durch 2. Dieser Wert wird durch android:innerRadius überschrieben. Der Standardwert ist 3.
android:useLevel
Boolescher Wert. „True“, wenn dies als LevelListDrawable verwendet wird. Dies ist normalerweise falsch, andernfalls wird die Form möglicherweise nicht angezeigt.
<corners>
Erstellt abgerundete Ecken für die Form. Gilt nur, wenn die Form ein Rechteck ist.

Attribute:

android:radius
Dimension: Der Radius für alle Ecken als Dimensionswert oder Dimensionsressource. Dies wird für jede Ecke durch die folgenden Attribute überschrieben.
android:topLeftRadius
Dimension: Der Radius der oberen linken Ecke als Dimensionswert oder Dimensionsressource.
android:topRightRadius
Dimension: Der Umkreis für die obere rechte Ecke als Dimensionswert oder Dimensionsressource.
android:bottomLeftRadius
Dimension: Der Radius der linken unteren Ecke als Dimensionswert oder Dimensionsressource.
android:bottomRightRadius
Dimension: Der Radius der unteren rechten Ecke als Dimensionswert oder Dimensionsressource

Hinweis:Für jede Ecke muss zuerst ein Eckenradius festgelegt werden, der größer als 1 ist. Andernfalls werden keine Ecken abgerundet. Wenn bestimmte Ecken nicht abgerundet werden sollen, können Sie das Problem umgehen. Legen Sie dazu mit android:radius einen Standardeckradius fest, der größer als 1 ist, und überschreiben Sie dann alle Ecken mit den gewünschten Werten (0 dp), wenn keine abgerundeten Ecken gewünscht werden.

<gradient>
Gibt einen Farbverlauf für die Form an.

Attribute:

android:angle
Ganzzahl. Der Winkel für den Farbverlauf in Grad. 0 bedeutet von links nach rechts, 90 bedeutet von unten nach oben. Er muss ein Vielfaches von 45 sein. Der Standardwert ist 0.
android:centerX
Gleitkommazahl. Die relative X-Position für den Mittelpunkt des Gradienten (0–1,0).
android:centerY
Gleitkommazahl. Die relative Y-Position für den Mittelpunkt des Farbverlaufs (0–1,0).
android:centerColor
Farbe: Optionale Farbe als Hexadezimalwert oder Farbressource, die zwischen den Start- und Endfarben steht.
android:endColor
Farbe: Die Endfarbe als Hexadezimalwert oder als Farbressource.
android:gradientRadius
Gleitkommazahl. Der Radius des Farbverlaufs. Nur angewendet, wenn android:type="radial".
android:startColor
Farbe: Die Ausgangsfarbe als Hexadezimalwert oder Farbressource.
android:type
Keyword. Die Art des anzuwendenden Farbverlaufsmusters. Gültige Werte sind folgende:
AntwortBeschreibung
"linear" Ein linearer Farbverlauf. Das ist die Standardeinstellung.
"radial" Ein radialer Farbverlauf. Die Anfangsfarbe ist die Farbe in der Mitte.
"sweep" Ein überfliegender Linienverlauf.
android:useLevel
Boolescher Wert. „True“, wenn dies als LevelListDrawable verwendet wird.
<padding>
Abstand, der auf das enthaltende Ansichtselement angewendet werden soll. Dadurch wird die Position des Ansichtsinhalts aufgefüllt, nicht die Form.

Attribute:

android:left
Dimension: Linker Innenrand, als Dimensionswert oder Dimensionsressource.
android:top
Dimension: Abstand oben, als Dimensionswert oder Dimensionsressource
android:right
Dimension: Abstand rechts, als Dimensionswert oder Dimensionsressource
android:bottom
Dimension: Abstand unten, als Dimensionswert oder Dimensionsressource
<size>
Die Größe der Form.

Attribute:

android:height
Dimension: Die Höhe der Form als Dimensionswert oder Dimensionsressource.
android:width
Dimension: Die Breite der Form als Dimensionswert oder Dimensionsressource.

Hinweis:Standardmäßig wird die Form proportional zu den hier definierten Abmessungen auf die Größe der Containeransicht skaliert. Wenn Sie die Form in einer ImageView verwenden, können Sie die Skalierung einschränken, indem Sie android:scaleType auf "center" setzen.

<solid>
Eine Volltonfarbe zum Füllen der Form.

Attribute:

android:color
Farbe: Die Farbe, die auf die Form angewendet werden soll, als Hexadezimalwert oder als Farbressource.
<stroke>
Eine Strichlinie für die Form.

Attribute:

android:width
Dimension: Die Linienstärke als Dimensionswert oder Dimensionsressource.
android:color
Farbe: Die Farbe der Linie als Hexadezimalwert oder als Farbressource.
android:dashGap
Dimension: Der Abstand zwischen Linienstrichen als Dimensionswert oder Dimensionsressource. Nur gültig, wenn android:dashWidth festgelegt ist.
android:dashWidth
Dimension: Die Größe der einzelnen Strichlinien als Dimensionswert oder Dimensionsressource. Nur gültig, wenn android:dashGap festgelegt ist.
Beispiel:
XML-Datei gespeichert unter res/drawable/gradient_box.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

Diese Layout-XML-Datei wendet das Drawable-Objekt auf eine Ansicht an:

<TextView
    android:background="@drawable/gradient_box"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

Mit diesem Anwendungscode wird das Drawable der Form abgerufen und auf eine Ansicht angewendet:

Kotlin

val shape: Drawable? = getDrawable(resources, R.drawable.gradient_box, getTheme())

val tv: TextView = findViewById(R.id.textview)
tv.background = shape

Java

Resources res = getResources();
Drawable shape = ResourcesCompat.getDrawable(res, R.drawable.gradient_box, getTheme());

TextView tv = (TextView)findViewById(R.id.textview);
tv.setBackground(shape);
Siehe auch: