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ğer | Açıklama |
ifRoom | Bu öğ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. |
withText | Ayrı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. |
never | Bu öğeyi hiçbir zaman uygulama çubuğuna yerleştirmeyin. Bunun yerine, öğeyi uygulama çubuğunun taşma menüsünde listeleyin. |
always | Bu öğ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. |
collapseActionView | Bu 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ğer | Açı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ğer | Açı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ğer | Açıklama |
container | Bir kapsayıcının parçası olan
öğeler içindir. |
system | Sistem tarafından sağlanan öğeler için. |
secondary | Kullanıcı tarafından sağlanan ikincil (nadiren kullanılan) seçenekler için. |
alternative | O 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ğer | Açıklama |
none | Seçilemez. |
all | Tüm öğeler seçilebilir (onay kutuları kullanın). |
single | Yalnı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ğer | Açıklama |
container | Bir kapsayıcının parçası olan gruplar için. |
system | Sistem tarafından sağlanan gruplar için. |
secondary | Kullanıcı tarafından sağlanan ikincil (nadiren kullanılan) seçenekler olan gruplar için. |
alternative | O 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.
}