Zasób menu

Zasób menu definiuje menu aplikacji (menu opcji, menu kontekstowe lub podmenu), które można powiększyć za pomocą MenuInflater.

Wskazówki dotyczące korzystania z menu znajdziesz w artykule Dodawanie menu.

lokalizacja pliku:

res/menu/filename.xml(
) Nazwa pliku jest używana jako identyfikator zasobu
skompilowany typ danych zasobu:
Wskaźnik zasobu do zasobu Menu (lub podklasy)
odniesienie do zasobu:
W języku Java: R.menu.filename
W pliku XML: @[package:]menu.filename
składnia:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@[+][package:]id/resource_name"
          android:title="string"
          android:titleCondensed="string"
          android:icon="@[package:]drawable/drawable_resource_name"
          android:onClick="method name"
          android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
          android:actionLayout="@[package:]layout/layout_resource_name"
          android:actionViewClass="class name"
          android:actionProviderClass="class name"
          android:alphabeticShortcut="string"
          android:alphabeticModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
          android:numericShortcut="string"
          android:numericModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
          android:checkable=["true" | "false"]
          android:visible=["true" | "false"]
          android:enabled=["true" | "false"]
          android:menuCategory=["container" | "system" | "secondary" | "alternative"]
          android:orderInCategory="integer" />
    <group android:id="@[+][package:]id/resource name"
           android:checkableBehavior=["none" | "all" | "single"]
           android:visible=["true" | "false"]
           android:enabled=["true" | "false"]
           android:menuCategory=["container" | "system" | "secondary" | "alternative"]
           android:orderInCategory="integer" >
        <item />
    </group>
    <item >
        <menu>
          <item />
        </menu>
    </item>
</menu>
elementy:
Wymagane. Musi to być węzeł główny. Zawiera <item> lub <group> elementów.

Atrybuty:

xmlns:android
Przestrzeń nazw XML. Wymagane. Definiuje przestrzeń nazw XML, która musi wynosić "http://schemas.android.com/apk/res/android".
<item>
Pozycja w menu. Może zawierać element <menu> (dotyczy menu podrzędnego). Musi być elementem podrzędnym elementu <menu> lub <group>.

Atrybuty:

android:id
Identyfikator zasobu. Unikalny identyfikator zasobu. Aby utworzyć nowy identyfikator zasobu dla tego elementu, użyj formularza: "@+id/name" Symbol plusa oznacza, że jest ona utworzona jako nowy ID.
android:title
Zasób ciągu znaków. Tytuł menu w postaci zasobu tekstowego lub nieprzetworzonego ciągu znaków.
android:titleCondensed
Zasób ciągu znaków. Skrócony tytuł w postaci zasobu tekstowego lub nieprzetworzonego ciągu. Ten tytuł jest używany w sytuacjach, gdy zwykły tytuł jest za długi.
android:icon
Zasób rysowalny. Obraz, który ma służyć jako ikona pozycji menu.
android:onClick
Nazwa metody. Metoda wywoływania po kliknięciu tego elementu menu. musi być zadeklarowana w aktywności jako publiczna. Akceptuje ona MenuItem jako , który wskazuje kliknięty element. Ta metoda ma pierwszeństwo przed standardową metodą oddzwanianie do onOptionsItemSelected(). Zobacz na końcu tej strony.

Ostrzeżenie: jeśli zaciemniasz kod za pomocą ProGuard lub podobnego narzędzia, pamiętaj, aby wykluczyć metodę określoną w tym atrybucie ze zmiany nazwy, ponieważ może to spowodować funkcji.

Wprowadzono w interfejsie API poziomu 11.

android:showAsAction
Słowo kluczowe. Kiedy i jak ten element pojawia się jako działanie w aplikacji przeglądarki. Działanie w menu może się pojawić tylko wtedy, gdy aktywność zawiera na pasku aplikacji. Prawidłowe wartości:
WartośćOpis
ifRoomUmieść ten element tylko w pasek aplikacji, o ile jest na to miejsce. Jeśli nie ma miejsca dla wszystkich elementy oznaczone etykietą "ifRoom", czyli elementy z najniższą Wartości orderInCategory są wyświetlane jako działania, Pozostałe elementy wyświetlają się w rozszerzonym menu.
withTextDołącz też tekst tytułu (zdefiniowany do android:title) z działaniem. Możesz podać tę wartość razem z jednym pozostałych jako flagę, oddzielając je pionową kreską |.
neverNigdy nie umieszczaj tego elementu na pasku aplikacji. Zamiast tego wymień element w rozszerzeniu paska aplikacji .
alwaysZawsze umieszczaj ten element na pasku aplikacji. Nie używaj jej, chyba że jest konieczne, aby element zawsze pojawiał się w działaniu przeglądarki. Jeśli ustawisz kilka elementów tak, by były zawsze widoczne jako działania, mogą się one nakładać z innym interfejsem na pasku aplikacji.
collapseActionViewPowiązany widok działań z tym działaniem (zgodnie z deklaracją android:actionLayout lub android:actionViewClass) to zwijane.
Wprowadzono w interfejsie API na poziomie 14.

Zobacz Dodawanie paska aplikacji. .

Wprowadzono w interfejsie API poziomu 11.

android:actionLayout
Zasób układu. Układ używany jako widok działań.

Więcej informacji znajdziesz w artykule Korzystanie z działania dostawców wyświetleń i działań.

Wprowadzono w interfejsie API poziomu 11.

android:actionViewClass
Nazwa zajęć. Pełna i jednoznaczna nazwa zajęć dla: View który ma być używany jako widok działań. Przykład: "android.widget.SearchView", aby użyć widoku SearchView jako widoku działań.

Więcej informacji znajdziesz w artykule Korzystanie z działania dostawców wyświetleń i działań.

Ostrzeżenie: jeśli zaciemniasz kod za pomocą ProGuard lub podobnego narzędzia, pamiętaj, aby wykluczyć klasę określoną w tym atrybucie ze zmiany nazwy, ponieważ może to spowodować uszkodzenie funkcji.

Wprowadzono w interfejsie API poziomu 11.

android:actionProviderClass
Nazwa zajęć. Pełna i jednoznaczna nazwa klasy, której ActionProvider ma używać zamiast działania. Przykład: "android.widget.ShareActionProvider", aby użyć aplikacji ShareActionProvider.

Więcej informacji znajdziesz w artykule Korzystanie z działania dostawców wyświetleń i działań.

Ostrzeżenie: jeśli zaciemniasz kod za pomocą ProGuard lub podobnego narzędzia, pamiętaj, aby wykluczyć klasę określoną w tym atrybucie ze zmiany nazwy, ponieważ może to spowodować uszkodzenie funkcji.

Wprowadzono w interfejsie API poziomu 14.

android:alphabeticShortcut
Char. Znak alfabetycznego klawisza skrótu.
android:numericShortcut
Liczba całkowita. Liczba będąca cyfrą klawisza skrótu.
android:alphabeticModifiers
Słowo kluczowe. Modyfikator alfabetycznego elementu menu skrótu. Wartość domyślna odpowiada wartości Control . Prawidłowe wartości:
WartośćOpis
META Odpowiada meta klawiszowi Meta.
CTRL Odpowiada klawiszowi meta Control.
ALT Odpowiada klawiszowi meta Alt.
SHIFT Odpowiada klawiszowi meta Shift.
SYM Odpowiada meta klawiszowi Sym.
FUNKCJA Odpowiada klawiszowi meta Funkcja.

Uwaga: w jednej kolumnie . Przykład: android:alphabeticModifiers="CTRL|SHIFT" oznacza aby aktywować odpowiednią pozycję menu, użytkownik musi naciśnij jednocześnie klawisze meta Control i Shift za pomocą skrótu.

Możesz użyć metody setAlphabeticShortcut() do: ustawiać wartości atrybutów w sposób automatyczny. Więcej informacji na temat konfiguracji o atrybucie alphabeticModifier, zobacz alphabeticModifiers

android:numericModifiers
Słowo kluczowe. Modyfikator skrótu liczbowego elementu menu. Wartość domyślna odpowiada klawiszowi Control. Prawidłowa wartości:
WartośćOpis
META Odpowiada meta klawiszowi Meta.
CTRL Odpowiada klawiszowi meta Control.
ALT Odpowiada klawiszowi meta Alt.
SHIFT Odpowiada klawiszowi meta Shift.
SYM Odpowiada meta klawiszowi Sym.
FUNKCJA Odpowiada klawiszowi meta Funkcja.

Uwaga: w jednej kolumnie . Przykład: android:numericModifiers="CTRL|SHIFT" oznacza aby aktywować odpowiednią pozycję menu, użytkownik musi naciśnij jednocześnie klawisze meta Control i Shift za pomocą skrótu.

Aby ustawić, możesz użyć metody setNumericShortcut() wartości atrybutów. Więcej informacji na temat: numericModifier, zobacz numericModifiers

android:checkable
Wartość logiczna. Prawda, jeśli element jest możliwy do zaznaczenia.
android:checked
Wartość logiczna. Prawda, jeśli element jest domyślnie zaznaczony.
android:visible
Wartość logiczna. Prawda, jeśli element jest domyślnie widoczny.
android:enabled
Wartość logiczna. Prawda, jeśli element jest domyślnie włączony.
android:menuCategory
Słowo kluczowe. Wartość odpowiadająca Menu CATEGORY_* stałe, które określają priorytet elementu. Prawidłowe wartości:
WartośćOpis
containerW przypadku elementów, które są częścią kontenera.
systemW przypadku produktów dostarczanych przez systemu.
secondaryW przypadku elementów, które zostały przekazane przez użytkownika jako dodatkowe (rzadko używane).
alternativeElementy, które są działaniami alternatywnymi na obecnie wyświetlanych danych.
android:orderInCategory
Liczba całkowita. Kolejność ważności elementu w grupie.
<group>
Grupa menu umożliwiająca utworzenie kolekcji pozycji o wspólnych cechach, takich jak widoczne, włączone lub możliwe do wyboru. Zawiera co najmniej 1 element <item>. Musi to być element podrzędny elementu <menu>.

Atrybuty:

android:id
Identyfikator zasobu. Unikalny identyfikator zasobu. Aby utworzyć nowy identyfikator zasobu dla tego elementu, użyj formularza: "@+id/name" Symbol plusa oznacza, że jest ona utworzona jako nowy ID.
android:checkableBehavior
Słowo kluczowe. Typ działania, które można wybrać w przypadku grupy. Prawidłowe wartości:
WartośćOpis
noneNie można wybrać.
allMożesz zaznaczyć wszystkie elementy (użyj pól wyboru).
singleMożesz wybrać tylko jeden element (użyj opcji ).
android:visible
Wartość logiczna. Prawda, jeśli grupa jest widoczna.
android:enabled
Wartość logiczna. Prawda, jeśli grupa jest włączona.
android:menuCategory
Słowo kluczowe. Wartość odpowiadająca Menu CATEGORY_* stałych, które określają priorytet grupy. Prawidłowe wartości:
WartośćOpis
containerW przypadku grup, które są częścią kontenera.
systemW przypadku grup dostarczanych przez systemu.
secondaryDla grup przekazanych przez użytkowników jako dodatkowych (rzadko używane).
alternativeDla grup, które są działaniami alternatywnymi na obecnie wyświetlanych danych.
android:orderInCategory
Liczba całkowita. Domyślna kolejność elementów w kategorii.
przykład:
Plik XML zapisany o res/menu/example_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/item1"
          android:title="@string/item1"
          android:icon="@drawable/group_item1_icon"
          app:showAsAction="ifRoom|withText"/>
    <group android:id="@+id/group">
        <item android:id="@+id/group_item1"
              android:onClick="onGroupItemClick"
              android:title="@string/group_item1"
              android:icon="@drawable/group_item1_icon" />
        <item android:id="@+id/group_item2"
              android:onClick="onGroupItemClick"
              android:title="@string/group_item2"
              android:icon="@drawable/group_item2_icon" />
    </group>
    <item android:id="@+id/submenu"
          android:title="@string/submenu_title"
          app:showAsAction="ifRoom|withText" >
        <menu>
            <item android:id="@+id/submenu_item1"
                  android:title="@string/submenu_item1" />
        </menu>
    </item>
</menu>

Poniższy kod aplikacji rozszerza menu z wywołania zwrotnego onCreateOptionsMenu(Menu) i deklaruje metodę kliknięcia zwrotny dla dwóch z tych elementów:

Kotlin

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.example_menu, menu)
    return true
}

fun onGroupItemClick(item: MenuItem) {
    // One of the group items (using the onClick attribute) was clicked.
    // The item parameter passed here indicates which item it is.
    // All other menu item clicks are handled by Activity.onOptionsItemSelected.
}

Java

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.example_menu, menu);
    return true;
}

public void onGroupItemClick(MenuItem item) {
    // One of the group items (using the onClick attribute) was clicked.
    // The item parameter passed here indicates which item it is.
    // All other menu item clicks are handled by Activity.onOptionsItemSelected.
}