Pasek aplikacji umożliwia dodawanie przycisków działań użytkownika. Ta funkcja umożliwia umieszczanie najważniejszych czynności dotyczących bieżącego kontekstu u góry aplikacji. Na przykład aplikacja do przeglądania zdjęć może wyświetlać u góry przyciski udostępnij i utwórz album, gdy użytkownik przegląda zdjęcia. Gdy użytkownik ogląda pojedyncze zdjęcie, aplikacja może wyświetlić przyciski przycinania i filtrów.
Liczba miejsc na pasku aplikacji jest ograniczona. 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 zawsze będzie wyświetlane w rozszerzonym menu, a nie na pasku aplikacji.

Dodawanie przycisków działań
Wszystkie przyciski działań i inne elementy dostępne w menu dodatkowych działań są zdefiniowane w źródle XML menu. Aby dodać akcje do paska działań, utwórz nowy plik XML w katalogu res/menu/
projektu.
Dodaj element <item>
do każdego elementu, który chcesz uwzględnić na pasku czynności, 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 parametr app:showAsAction="ifRoom"
, tak jak w działaniu ulubione w przykładowym kodzie, to działanie będzie widoczne jako przycisk, jeśli znajdzie się na pasku aplikacji miejsce na nie. Jeśli nie ma wystarczająco dużo miejsca, nadmiar działań jest wysyłany do menu przepełnienia. Jeśli ustawisz app:showAsAction="never"
, tak jak w działaniu settings w przykładowym kodzie, działanie będzie zawsze widoczne 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 działania. Wiele przydatnych ikon znajdziesz w Material Icons.
Odpowiadanie na działania
Gdy użytkownik wybierze jeden z elementów na pasku aplikacji, system wywołuje metodę wywołania onOptionsItemSelected()
w Twojej aktywności i przekazuje obiekt MenuItem
, aby wskazać, który element został kliknięty. W implementacji funkcji onOptionsItemSelected()
wywołaj metodę MenuItem.getItemId()
, aby określić, który element został kliknięty. Zwracany identyfikator jest zgodny z wartością deklarowaną w odpowiednim atrybucie elementu <item>
android:id
.
Na przykład ten fragment kodu sprawdza, jakie działanie wybierze użytkownik. Jeśli metoda nie rozpozna 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); } }