Freigeben über


Benutzerdefinierte Schaltfläche

In diesem Abschnitt erstellen Sie eine Schaltfläche mit einem benutzerdefinierten Bild anstelle von Text. Dabei verwenden Sie das Button Widget und eine XML-Datei, die drei verschiedene Bilder definiert, die für die verschiedenen Schaltflächenzustände verwendet werden sollen. Wenn die Schaltfläche gedrückt wird, wird eine kurze Meldung angezeigt.

Klicken Sie mit der rechten Maustaste auf die folgenden drei Bilder, laden Sie sie herunter, und kopieren Sie sie in das Verzeichnis Resources/drawable ihres Projekts. Diese werden für die verschiedenen Schaltflächenzustände verwendet.

Grünes Android-Symbol für NormalzustandOrange Android-Symbol für fokussierten ZustandGelbes Android-Symbol für gedrückten Zustand

Erstellen Sie im Verzeichnis Resources/drawable eine neue Datei mit dem Namenandroid_button.xml. Fügen Sie den folgenden XML-Code ein:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/android_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/android_focused"
          android:state_focused="true" />
    <item android:drawable="@drawable/android_normal" />
</selector>

Dadurch wird eine einzelne ziehbare Ressource definiert, die ihr Bild basierend auf dem aktuellen Zustand der Schaltfläche ändert. Die erste <item> definiert android_pressed.png als Bild, wenn die Schaltfläche gedrückt wird (sie wurde aktiviert); die zweite <item> definiert android_focused.png als Bild, wenn die Schaltfläche fokussiert ist (wenn die Schaltfläche mithilfe des Trackballs oder des Richtungspads hervorgehoben wird); und die dritte <item> definiert android_normal.png als Bild für den normalen Zustand (wenn weder gedrückt noch fokussiert). Diese XML-Datei stellt nun eine einzelne zeichnungsfähige Ressource dar, und wenn von einem Button für den Hintergrund verwiesen wird, ändert sich das angezeigte Bild basierend auf diesen drei Zuständen.

Hinweis

Die Reihenfolge der <item> Elemente ist wichtig. Wenn auf diese Zeichnungsfläche verwiesen wird, werden die <item>s durchlaufen, um zu bestimmen, welches für den aktuellen Schaltflächenzustand geeignet ist. Da das "normale" Bild zuletzt ist, wird es nur angewendet, wenn die Bedingungen und android:state_pressedandroid:state_focused beide false ausgewertet haben.

Öffnen Sie die Datei Resources/layout/Main.axml, und fügen Sie das Button -Element hinzu:

<Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@drawable/android_button" />

Das android:background -Attribut gibt die zeichnungsfähige Ressource an, die für den Hintergrund der Schaltfläche verwendet werden soll (die, wenn sie unter Resources/drawable/android.xmlgespeichert wird, als @drawable/androidreferenziert wird. Dadurch wird das normale Hintergrundbild ersetzt, das für Schaltflächen im gesamten System verwendet wird. Damit das zeichenbare sein Bild basierend auf dem Schaltflächenzustand ändern kann, muss das Bild auf den Hintergrund angewendet werden.

Damit die Schaltfläche beim Drücken etwas tut, fügen Sie den folgenden Code am Ende derOnCreate()-Methode:

Button button = FindViewById<Button>(Resource.Id.button);

button.Click += (o, e) => {
    Toast.MakeText (this, "Beep Boop", ToastLength.Short).Show ();
};

Dadurch wird der Button aus dem Layout erfasst und dann eine Toast Meldung hinzugefügt, die angezeigt wird, wenn auf die Button geklickt wird.

Führen Sie nun die Anwendung aus.

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source-Projekt erstellt und freigegeben wurden und gemäß den in derCreative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.