Na pasku aplikacji możesz dodawać przyciski działań użytkownika. Ta funkcja umożliwia umieszczanie najważniejszych działań w bieżącym kontekście na górze aplikacji. Na przykład aplikacja do przeglądania zdjęć może wyświetlać przyciski udostępniania i tworzenia albumu u góry, gdy użytkownik przegląda rolkę ze zdjęciami. Gdy użytkownik przegląda pojedyncze zdjęcie, aplikacja może wyświetlać przyciski przycinania i filtrowania.
Miejsce na pasku aplikacji jest ograniczone. Jeśli aplikacja deklaruje więcej działań, niż mieści się na pasku aplikacji, pasek aplikacji wysyła nadmiarowe działania do menu przepełnienia. Aplikacja może też określić, że działanie ma być zawsze widoczne w rozszerzonym menu, a nie na pasku aplikacji.
Dodawanie przycisków działań
Wszystkie przyciski poleceń i inne elementy dostępne w menu dodatkowych opcji są zdefiniowane w zasobie menu XML. Aby dodać działania do paska działań, utwórz nowy plik XML w katalogu res/menu/ projektu.
Dodaj element
<item>
dla każdego elementu, który chcesz umieścić na pasku działań, jak pokazano w tym przykładowym pliku XML menu:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- "Mark Favorite", must appear as action button if possible. --> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite_black_48dp" android:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings, must always be in the overflow. --> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
Atrybut app:showAsAction określa, czy działanie jest wyświetlane jako przycisk na pasku aplikacji. Jeśli ustawisz wartość app:showAsAction="ifRoom", tak jak w przykładzie kodu w przypadku działania favorite, działanie będzie wyświetlane jako przycisk, jeśli na pasku aplikacji będzie na niego miejsce. Jeśli nie ma wystarczająco dużo miejsca, nadmiarowe działania są wysyłane do rozszerzonego menu. Jeśli ustawisz app:showAsAction="never", tak jak w przypadku działania settings w przykładzie kodu, działanie będzie zawsze wyświetlane w rozszerzonym menu, a nie na pasku aplikacji.
Jeśli działanie jest wyświetlane na pasku aplikacji, system używa ikony działania jako przycisku polecenia. Wiele przydatnych ikon znajdziesz w Material Icons.
Odpowiadanie na działania
Gdy użytkownik wybierze jeden z elementów paska aplikacji, system wywoła metodę wywołania zwrotnego onOptionsItemSelected()
aktywności i przekaże obiekt MenuItem
wskazujący, który element został kliknięty. W implementacji
onOptionsItemSelected() wywołaj metodę
MenuItem.getItemId(), aby określić, który element został kliknięty. Zwrócony identyfikator jest zgodny z wartością zadeklarowaną w odpowiednim elemencie <item> w atrybucie android:id.
Na przykład ten fragment kodu sprawdza, jakie działanie wybiera użytkownik. Jeśli metoda nie rozpoznaje działania użytkownika, wywołuje metodę klasy nadrzędnej:
Kotlin
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { R.id.action_settings -> { // User chooses the "Settings" item. Show the app settings UI. true } R.id.action_favorite -> { // User chooses the "Favorite" action. Mark the current item as a // favorite. true } else -> { // The user's action isn't recognized. // Invoke the superclass to handle it. super.onOptionsItemSelected(item) } }
Java
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: // User chooses the "Settings" item. Show the app settings UI. return true; case R.id.action_favorite: // User chooses the "Favorite" action. Mark the current item as a // favorite. return true; default: // The user's action isn't recognized. // Invoke the superclass to handle it. return super.onOptionsItemSelected(item); } }