Eine Schaltfläche besteht aus Text oder einem Symbol oder aus beidem. Damit wird kommuniziert, welche Aktion beim Antippen des Nutzers erfolgt.
Sie können eine Schaltfläche in Ihrem Layout auf eine von drei Arten erstellen, je nachdem, ob Sie eine Schaltfläche mit Text, einem Symbol oder beidem verwenden möchten:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <Button android:id="@+id/supabutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I'm a button" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="A tiny Android icon" android:src="@drawable/baseline_android_24" app:tint="#ff0000" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableStart="@drawable/baseline_android_24" android:drawablePadding="4dp" android:drawableTint="#ff0000" android:text="I'm a button with an icon" /> </LinearLayout>
Der vorherige Code generiert in etwa Folgendes:
Auf Klickereignisse reagieren
Wenn der Nutzer auf eine Schaltfläche tippt, empfängt das Button
-Objekt ein On-Click-Ereignis.
Wenn Sie den Event-Handler programmatisch deklarieren möchten, erstellen Sie ein View.OnClickListener
-Objekt und weisen es der Schaltfläche zu, indem Sie setOnClickListener(View.OnClickListener)
wie im folgenden Beispiel aufrufen:
Kotlin
findViewById<Button>(R.id.supabutton) .setOnClickListener { Log.d("BUTTONS", "User tapped the Supabutton") }
Java
Button button = (Button) findViewById(R.id.supabutton); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.d("BUTTONS", "User tapped the Supabutton"); } });
Schaltfläche gestalten
Das Erscheinungsbild der Schaltfläche, also das Hintergrundbild und die Schriftart, variiert je nach Gerät, da Geräte verschiedener Hersteller oft unterschiedliche Standardstile für Eingabesteuerelemente haben.
Wenn du einzelne Schaltflächen mit einem anderen Hintergrund anpassen möchtest, gib das Attribut android:background
mit einer Drawable- oder Farbressource an. Alternativ können Sie einen Stil für die Schaltfläche anwenden. Dieser funktioniert ähnlich wie HTML-Stile, um mehrere Stileigenschaften wie Hintergrund, Schriftart und Größe zu definieren. Weitere Informationen zum Anwenden von Stilen finden Sie unter Stile und Designs.
Rahmenlose Schaltfläche
Eines der nützlichen Designs ist eine „randlose“ Schaltfläche. Rahmenlose Schaltflächen ähneln einfachen Schaltflächen. Sie haben jedoch keinen Rahmen oder Hintergrund, ändern sich jedoch in verschiedenen Status, z. B. beim Tippen.
Wenn Sie eine Schaltfläche ohne Rahmen erstellen möchten, wenden Sie den Stil borderlessButtonStyle
auf die Schaltfläche an, wie im folgenden Beispiel gezeigt:
<Button android:id="@+id/supabutton" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I'm a button" />
Benutzerdefinierter Hintergrund
Wenn du das Erscheinungsbild deiner Schaltfläche ganz neu definieren möchtest, kannst du einen benutzerdefinierten Hintergrund festlegen. Statt eine einfache Bitmap oder Farbe bereitzustellen, muss der Hintergrund jedoch eine Statuslistenressource sein, deren Darstellung sich abhängig vom aktuellen Status der Schaltfläche ändert.
Sie können die Liste der Bundesstaaten in einer XML-Datei definieren, in der drei Bilder oder Farben für die verschiedenen Schaltflächenzustände definiert sind.
So erstellen Sie ein Drawable für eine Statusliste für Ihren Schaltflächenhintergrund:
- Erstellen Sie drei Bitmaps für den Schaltflächenhintergrund, die die Standardzustände sowie die Status für die angetippten und fokussierten Schaltflächen darstellen. Damit Ihre Bilder für Schaltflächen unterschiedlicher Größe geeignet sind, erstellen Sie die Bitmaps als 9-Patch-Bitmaps.
- Platzieren Sie die Bitmaps im Verzeichnis
res/drawable/
Ihres Projekts. Benennen Sie jede Bitmap so, dass sie den jeweiligen Schaltflächenstatus widerspiegelt, z. B.button_default.9.png
,button_pressed.9.png
undbutton_focused.9.png
. - Erstellen Sie eine neue XML-Datei im Verzeichnis
res/drawable/
. Geben Sie ihm einen Namen wiebutton_custom.xml
. Füge einen XML-Code wie den folgenden ein:<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/button_focused" android:state_focused="true" /> <item android:drawable="@drawable/button_default" /> </selector>
Hiermit wird eine einzelne Drawable-Ressource definiert, die ihr Bild basierend auf dem aktuellen Status der Schaltfläche ändert.
- Die erste
<item>
definiert die Bitmap, die verwendet werden soll, wenn auf die Schaltfläche getippt (aktiviert) wird. - Die zweite
<item>
definiert die Bitmap, die verwendet werden soll, wenn die Schaltfläche im Fokus ist, z. B. wenn die Schaltfläche mit dem Trackball oder den Richtungstasten hervorgehoben wird. - Die dritte
<item>
definiert die Bitmap, die verwendet werden soll, wenn sich die Schaltfläche im Standardstatus befindet, also weder angetippt noch fokussiert ist.
Diese XML-Datei stellt eine einzelne Drawable-Ressource dar. Wenn von einem
Button
als Hintergrund darauf verwiesen wird, ändert sich das angezeigte Bild je nach Status der Schaltfläche. - Die erste
- Wende die Drawable-XML-Datei als Schaltflächenhintergrund an:
<Button android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" android:background="@drawable/button_custom" />
Weitere Informationen zu dieser XML-Syntax und zum Definieren einer Schaltfläche, die deaktiviert ist, den Mauszeiger darüber bewegt oder einen anderen Status hat, finden Sie unter StateListDrawable
.