Przycisk niestandardowy
W tej sekcji utworzysz przycisk z obrazem niestandardowym zamiast tekstu przy użyciu widżetu Button
i pliku XML, który definiuje trzy różne obrazy do użycia dla różnych stanów przycisków. Po naciśnięciu przycisku zostanie wyświetlony krótki komunikat.
Kliknij prawym przyciskiem myszy i pobierz trzy poniższe obrazy, a następnie skopiuj je do katalogu Resources/drawable projektu. Będą one używane dla różnych stanów przycisków.
Utwórz nowy plik w katalogu Resources/drawable o nazwie android_button.xml. Wstaw następujący kod XML:
<?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>
Definiuje pojedynczy zasób do rysowania, który zmieni jego obraz na podstawie bieżącego stanu przycisku. Pierwszy definiuje android_pressed.png jako obraz po naciśnięciu przycisku (został aktywowany); drugi <item>
definiuje android_focused.png jako obraz, gdy przycisk jest ukierunkowany (gdy przycisk jest wyróżniony za pomocą trackballa lub podkładki kierunkowej), a trzeci <item>
definiuje android_normal.png jako obraz dla normalnego stanu (gdy nie jest ani naciskany, ani skoncentrowany).<item>
Ten plik XML reprezentuje teraz pojedynczy zasób do rysowania, a w przypadku odwołania do Button
elementu dla jego tła wyświetlany obraz zmieni się na podstawie tych trzech stanów.
Uwaga
Kolejność <item>
elementów jest ważna. Po odwoływaleniu się do tego elementu można odwoływać się do parametrów s, <item>
aby określić, który z nich jest odpowiedni dla bieżącego stanu przycisku.
Ponieważ obraz "normalny" jest ostatni, jest stosowany tylko wtedy, gdy warunki android:state_pressed
i android:state_focused
obaj ocenili wartość false.
Otwórz plik Resources/layout/Main.axml i dodaj Button
element:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/android_button" />
Atrybut android:background
określa zasób do rysowania do użycia dla tła przycisku (który po zapisaniu w zasobach/drawable/android.xml jest przywoływalny jako @drawable/android
). Zastępuje to normalny obraz tła używany dla przycisków w całym systemie. Aby można było zmienić jego obraz na podstawie stanu przycisku, obraz musi zostać zastosowany do tła.
Aby przycisk zrobił coś po naciśnięciu, dodaj następujący kod na końcu OnCreate()
Metoda:
Button button = FindViewById<Button>(Resource.Id.button);
button.Click += (o, e) => {
Toast.MakeText (this, "Beep Boop", ToastLength.Short).Show ();
};
Spowoduje to przechwycenie Button
elementu z układu, a następnie dodanie Toast
komunikatu do wyświetlenia po kliknięciu Button
.
Teraz uruchom aplikację.
Części tej strony to modyfikacje oparte na pracy utworzonej i udostępnionej przez projekt open source systemu Android i używane zgodnie z warunkami opisanymi wlicencji autorstwa Creative Commons 2.5.