Na pasku aplikacji możesz dodawać przyciski działań użytkownika. Ta funkcja pozwala umieścić najważniejsze działania w bieżącym kontekście u góry aplikacji. Na przykład aplikacja do przeglądania zdjęć może wyświetlać opcje udostępnianie i tworzenie albumu na górze, gdy użytkownik ogląda rolkę ze zdjęciami. Kiedy jeśli użytkownik ogląda pojedyncze zdjęcie, aplikacja może wyświetlić opcję przytnij, filtrów.
Miejsce na pasku aplikacji jest ograniczone. Jeśli aplikacja zadeklaruje więcej działań, niż może się zmieścić to pasek aplikacji wysyła nadmiarowe działania do rozszerzonego menu. Aplikacja może też określić, że działanie jest zawsze widoczne w rozszerzonym menu, zamiast na pasku aplikacji.
.Dodaj przyciski poleceń
Wszystkie przyciski poleceń i inne elementy dostępne w rozszerzeniu działania są
zdefiniowane w pliku XML
zasobu menu. Aby dodać
utwórz nowy plik XML w folderze
Katalog res/menu/
.
Dodaj
<item>
dla każdego elementu, który chcesz uwzględnić na pasku działań, jak widać na pasku
ten przykładowy plik 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świetlany jako przycisk na pasku aplikacji. Jeśli ustawisz
app:showAsAction="ifRoom"
– tak jak w przykładowym kodzie
działanie ulubione – działanie jest wyświetlane jako przycisk, o ile jest wolne miejsce.
na pasku aplikacji. Jeśli nie ma wystarczającej ilości miejsca, nadmiarowe działania są wysyłane do
rozszerzone menu. Jeśli ustawisz app:showAsAction="never"
, tak jak w
działania settings w przykładowym kodzie – jest ono zawsze wymienione w sekcji
rozszerzone menu i nie są wyświetlane na pasku aplikacji.
System użyje ikony działania jako przycisku polecenia, jeśli wyświetli się działanie na pasku aplikacji. Wiele przydatnych ikon znajdziesz w Ikony Material Design.
Reagowanie na działania
Gdy użytkownik wybierze jeden z elementów na pasku aplikacji, system wywoła
aktywności
onOptionsItemSelected()
wywołania zwrotnego i przekazuje
MenuItem
obiekt
co wskazuje, który element został kliknięty. W swojej implementacji
onOptionsItemSelected()
, wywołaj
MenuItem.getItemId()
aby określić, który element został kliknięty. Zwrócony identyfikator pasuje do wartości,
zadeklaruj w odpowiednim elemencie <item>
android:id
.
Ten fragment kodu sprawdza na przykład, które działanie wybiera użytkownik. Jeśli metoda nie rozpoznaje działania użytkownika, wywołuje klasę nadrzędną :
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); } }