Menü kaynağı

Bir menü kaynağı, MenuInflater ile genişletilebilen bir uygulama menüsünü (seçenekler menüsü, içerik menüsü veya alt menü) tanımlar.

Menülerin kullanımıyla ilgili bir kılavuz için Menü ekleme başlıklı makaleyi inceleyin.

dosya konumu:
res/menu/filename.xml
Dosya adı, kaynak kimliği olarak kullanılır
derlenmiş kaynak veri türü:
Menu (veya alt sınıf) kaynağına giden kaynak işaretçisi
kaynak referansı:
Java'da: R.menu.filename
XML'de: @[package:]menu.filename
söz dizimi:
<?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>
öğeler:
Zorunlu. Bu, kök düğüm olmalıdır. <item> ve/veya <group> öğeleri içerir.

Özellikler:

xmlns:android
XML ad alanı. Zorunludur. XML ad alanını tanımlar. Bu alanın "http://schemas.android.com/apk/res/android" olması gerekir.
<item>
Menü öğesi <menu> öğesi içerebilir (alt menü için). <menu> veya <group> öğesinin alt öğesi olmalıdır.

Özellikler:

android:id
Kaynak Kimliği. Benzersiz kaynak kimliği. Bu öğe için yeni bir kaynak kimliği oluşturmak üzere şu formu kullanın: "@+id/name". Artı simgesi, yeni bir kimlik olarak oluşturulduğunu gösterir.
android:title
Dize kaynağı. Dize kaynağı veya ham dize olarak menü başlığı.
android:titleCondensed
Dize kaynağı. Dize kaynağı veya işlenmemiş dize olarak sıkıştırılmış başlık. Bu başlık, normal başlığın çok uzun olduğu durumlarda kullanılır.
android:icon
Çekilebilir kaynak. Menü öğesi simgesi olarak kullanılacak bir resim.
android:onClick
Yöntem adı. Bu menü öğesi tıklandığında çağrılacak yöntem. Bu yöntem, etkinlikte herkese açık olarak beyan edilmelidir. Tıklanan öğeyi gösteren MenuItem parametresini tek parametresi olarak kabul eder. Bu yöntem, standart onOptionsItemSelected() geri çağırmasına göre önceliklidir. Bu sayfanın sonundaki örneğe bakın.

Uyarı: ProGuard veya benzer bir araç kullanarak kodunuzda kod karartırsanız bu özellikte belirttiğiniz yöntemi yeniden adlandırma işleminden hariç tuttuğunuzdan emin olun. Aksi takdirde bu yöntem işlevi bozabilir.

API düzeyi 11'de kullanıma sunuldu.

android:showAsAction
Anahtar kelime. Bu öğenin uygulama çubuğunda bir işlem öğesi olarak ne zaman ve nasıl görüneceği. Bir menü öğesi, yalnızca etkinlik bir uygulama çubuğu içerdiğinde işlem öğesi olarak görünebilir. Geçerli değerler:
DeğerAçıklama
ifRoomBu öğeyi yalnızca yer varsa uygulama çubuğuna yerleştirin. "ifRoom" olarak işaretlenen tüm öğeler için yer yoksa en düşük orderInCategory değerlerine sahip öğeler işlem olarak görüntülenir, geri kalan öğeler ise taşma menüsünde görüntülenir.
withTextAyrıca, işlem öğesine başlık metnini (android:title tarafından tanımlanır) ekleyin. Bu değeri, diğer değerlerden biriyle birlikte dikey çizgi | ile ayırarak işaret olarak ekleyebilirsiniz.
neverBu öğeyi hiçbir zaman uygulama çubuğuna yerleştirmeyin. Bunun yerine, öğeyi uygulama çubuğunun taşma menüsünde listeleyin.
alwaysBu öğeyi her zaman uygulama çubuğuna yerleştir. Öğenin her zaman işlem çubuğunda görünmesi çok önemli olmadığı sürece bunu kullanmaktan kaçının. Birden çok öğenin her zaman işlem öğeleri olarak görünmesini sağlamak, bunların uygulama çubuğundaki diğer kullanıcı arayüzüyle çakışmasına neden olabilir.
collapseActionViewBu işlem öğesiyle ilişkili işlem görünümü (android:actionLayout veya android:actionViewClass tarafından tanımlandığı şekilde) daraltılabilir.
API düzeyi 14'te kullanıma sunulmuştur.

Daha fazla bilgi için Uygulama çubuğunu ekleme bölümüne bakın.

API düzeyi 11'de kullanıma sunuldu.

android:actionLayout
Düzen kaynağı. İşlem görünümü olarak kullanılacak bir düzen.

Daha fazla bilgi için İşlem görünümlerini ve işlem sağlayıcılarını kullanma bölümüne bakın.

API düzeyi 11'de kullanıma sunuldu.

android:actionViewClass
Sınıf adı. İşlem görünümü olarak kullanılacak View için tam nitelikli sınıf adı. Örneğin, SearchView işlemini işlem görünümü olarak kullanmak için "android.widget.SearchView".

Daha fazla bilgi için İşlem görünümlerini ve işlem sağlayıcılarını kullanma bölümüne bakın.

Uyarı: ProGuard veya benzer bir araç kullanarak kodunuzda kod karartırsanız bu özellikte belirttiğiniz sınıfı yeniden adlandırma işleminden hariç tuttuğunuzdan emin olun. Aksi takdirde bu işlev bozulabilir.

API düzeyi 11'de kullanıma sunuldu.

android:actionProviderClass
Sınıf adı. İşlem öğesinin yerine kullanılacak ActionProvider için tam nitelikli sınıf adı. Örneğin, ShareActionProvider kullanmak için "android.widget.ShareActionProvider".

Daha fazla bilgi için İşlem görünümlerini ve işlem sağlayıcılarını kullanma bölümüne bakın.

Uyarı: ProGuard veya benzer bir araç kullanarak kodunuzda kod karartırsanız bu özellikte belirttiğiniz sınıfı yeniden adlandırma işleminden hariç tuttuğunuzdan emin olun. Aksi takdirde bu işlev bozulabilir.

API düzeyi 14'te kullanıma sunulmuştur.

android:alphabeticShortcut
Karakter. Alfabetik kısayol tuşu için bir karakter.
android:numericShortcut
Tamsayı. Sayısal kısayol tuşu için bir sayı.
android:alphabeticModifiers
Anahtar kelime. Menü öğesinin alfabetik kısayolu için bir değiştiricidir. Varsayılan değer, Ctrl tuşuna karşılık gelir. Geçerli değerler:
DeğerAçıklama
META Meta meta anahtarına karşılık gelir.
CTRL Control meta tuşuna karşılık gelir.
AL Alt meta tuşuna karşılık gelir.
ÜST KARAKTER Üst Karakter meta tuşuna karşılık gelir.
SEM Sym meta tuşuna karşılık gelir.
İŞLEV Function meta tuşuna karşılık gelir.

Not: Bir özellikte birden fazla anahtar kelime belirtebilirsiniz. Örneğin, android:alphabeticModifiers="CTRL|SHIFT", ilgili menü öğesini tetiklemek için kullanıcının kısayolla birlikte Ctrl ve Üst Karakter meta tuşlarına basması gerektiğini belirtir.

Özellik değerlerini programatik olarak ayarlamak için setAlphabeticShortcut() yöntemini kullanabilirsiniz. alphabeticModifier özelliği hakkında daha fazla bilgi için alphabeticModifiers konusuna bakın.

android:numericModifiers
Anahtar kelime. Menü öğesinin sayısal kısayolu için bir değiştirici. Varsayılan değer, Ctrl tuşuna karşılık gelir. Geçerli değerler:
DeğerAçıklama
META Meta meta anahtarına karşılık gelir.
CTRL Control meta tuşuna karşılık gelir.
AL Alt meta tuşuna karşılık gelir.
ÜST KARAKTER Üst Karakter meta tuşuna karşılık gelir.
SEM Sym meta tuşuna karşılık gelir.
İŞLEV Function meta tuşuna karşılık gelir.

Not: Bir özellikte birden fazla anahtar kelime belirtebilirsiniz. Örneğin, android:numericModifiers="CTRL|SHIFT", ilgili menü öğesini tetiklemek için kullanıcının kısayolla birlikte Ctrl ve Üst Karakter meta tuşlarına basması gerektiğini belirtir.

Özellik değerlerini programatik olarak ayarlamak için setNumericShortcut() yöntemini kullanabilirsiniz. numericModifier özelliği hakkında daha fazla bilgi için numericModifiers konusuna bakın.

android:checkable
Boole. Öğe işaretlenebilirse doğru değerini alır.
android:checked
Boole. Öğe varsayılan olarak işaretliyse doğru değerini alır.
android:visible
Boole. Öğe varsayılan olarak görünürse doğru değerini alır.
android:enabled
Boole. Öğe varsayılan olarak etkinse doğru değerini alır.
android:menuCategory
Anahtar kelime. Öğenin önceliğini tanımlayan Menu CATEGORY_* sabitlerine karşılık gelen değer. Geçerli değerler:
DeğerAçıklama
containerBir kapsayıcının parçası olan öğeler içindir.
systemSistem tarafından sağlanan öğeler için.
secondaryKullanıcı tarafından sağlanan ikincil (nadiren kullanılan) seçenekler için.
alternativeO anda görüntülenen veriler üzerinde alternatif işlemler olan öğeler içindir.
android:orderInCategory
Tamsayı. Öğenin grup içindeki önem sırası.
<group>
Görünürlük, etkin veya seçilebilir olma gibi ortak özellikleri paylaşan bir öğe koleksiyonu oluşturmak için kullanılan menü grubu. Bir veya daha fazla <item> öğesi içerir. Bir <menu> öğesinin alt öğesi olmalıdır.

Özellikler:

android:id
Kaynak Kimliği. Benzersiz kaynak kimliği. Bu öğe için yeni bir kaynak kimliği oluşturmak üzere şu formu kullanın: "@+id/name". Artı simgesi, yeni bir kimlik olarak oluşturulduğunu gösterir.
android:checkableBehavior
Anahtar kelime. Grup için seçilebilir davranışın türü. Geçerli değerler:
DeğerAçıklama
noneSeçilemez.
allTüm öğeler seçilebilir (onay kutuları kullanın).
singleYalnızca bir öğe seçilebilir (radyo düğmelerini kullanın).
android:visible
Boole. Grup görünürse doğru değerini alır.
android:enabled
Boole. Grup etkinse doğru değerini alır.
android:menuCategory
Anahtar kelime. Grubun önceliğini tanımlayan Menu CATEGORY_* sabitlerine karşılık gelen değer. Geçerli değerler:
DeğerAçıklama
containerBir kapsayıcının parçası olan gruplar için.
systemSistem tarafından sağlanan gruplar için.
secondaryKullanıcı tarafından sağlanan ikincil (nadiren kullanılan) seçenekler olan gruplar için.
alternativeO anda görüntülenen veriler üzerinde alternatif işlemler olan gruplar için.
android:orderInCategory
Tamsayı. Kategorideki öğelerin varsayılan sırası.
örnek:
XML dosyasının res/menu/example_menu.xml konumuna kaydedildi:
<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>

Aşağıdaki uygulama kodu, onCreateOptionsMenu(Menu) geri çağırmasındaki menüyü genişletir ve ayrıca iki öğe için tıklamada geri çağırmayı bildirir:

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.
}