يحدد مورد القائمة قائمة تطبيق - قائمة خيارات أو قائمة سياق أو قائمة فرعية - والتي
ويمكن تكبيره باستخدام MenuInflater
.
للحصول على دليل حول استخدام القوائم، يمكنك الاطّلاع على إضافة القوائم.
- مكان الملف:
res/menu/filename.xml
-
يُستخدَم اسم الملف كمعرّف المورد
- نوع بيانات الموارد المجمّعة:
- مؤشر الموارد إلى مورد
Menu
(أو فئة فرعية)
- مرجع الموارد:
-
في Java:
R.menu.filename
في ملف XML: @[package:]menu.filename
- بناء الجملة:
-
<?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>
- العناصر:
-
- حقل مطلوب. يجب أن تكون هذه هي العقدة الجذر. يحتوي على
<item>
و/أو
<group>
من العناصر.
السمات:
xmlns:android
- مساحة اسم XML: يجب ملء هذا الحقل. تحدد مساحة اسم XML،
يجب أن يكون
"http://schemas.android.com/apk/res/android"
.
<item>
- عنصر في قائمة الطعام. وقد يحتوي على العنصر
<menu>
(لقائمة فرعية).
يجب أن تكون عنصرًا ثانويًا لعنصر <menu>
أو <group>
.
السمات:
android:id
- رقم تعريف المورد. معرّف مورد فريد. لإنشاء معرِّف مورد جديد لهذا العنصر، استخدِم النموذج التالي:
"@+id/name"
تشير علامة الجمع إلى أن هذا تم إنشاؤه كـ
رقم التعريف
android:title
- مورد السلسلة. عنوان القائمة كمورد سلسلة أو سلسلة أولية.
android:titleCondensed
- مورد السلسلة. هو عنوان مختصر كمورد سلسلة أو سلسلة أولية. هذا النمط
يُستخدم العنوان في الحالات التي يكون فيها العنوان العادي طويلاً جدًا.
android:icon
- مورد قابل للرسم: صورة لاستخدامها كرمز لعنصر في القائمة
android:onClick
- اسم الطريقة. طريقة الاتصال عند النقر على هذا العنصر في القائمة. تشير رسالة الأشكال البيانية
في النشاط على أنه عام. يقبل استخدام
MenuItem
باعتباره
فقط، مما يشير إلى السلعة التي تم النقر عليها. تكون لهذه الطريقة الأولوية على الطريقة العادية
رد الاتصال إلى onOptionsItemSelected()
. يمكنك الاطّلاع على
المثال في نهاية هذه الصفحة.
تحذير: في حال إخفاء مفاتيح فك تشفير الرمز باستخدام ProGuard أو أداة مشابهة،
تأكد من استبعاد الطريقة التي تحددها في هذه السمة من إعادة التسمية، لأنها قد تؤدي إلى تعطيل
الأخرى.
وتم تقديم هذه المقاييس في المستوى 11 من واجهة برمجة التطبيقات.
android:showAsAction
- الكلمة الرئيسية. وقت وطريقة ظهور هذا العنصر كبند عمل في التطبيق
الشريط. لا يمكن أن يظهر عنصر قائمة كبند عمل إلا عندما يتضمن النشاط
شريط التطبيقات. قيم صالحة:
القيمة | الوصف |
ifRoom | يُرجى وضع هذا العنصر فقط في
شريط التطبيقات إذا كان هناك مجال لذلك. إذا لم يكن هناك مجال لجميع
العناصر المميزة بـ "ifRoom" ، العناصر ذات أدنى قيمة
يتم عرض قيم orderInCategory كإجراءات،
يتم عرض العناصر المتبقية في القائمة الكاملة. |
withText | قم أيضًا بتضمين نص العنوان (محدد
android:title ) مع بند العمل. يمكنك تضمين هذه القيمة مع قيمة
الأخرى كعلامة تم وضعها من خلال فصلها بشريط | . |
never | عدم وضع هذا العنصر في شريط التطبيقات مطلقًا. بدلاً من ذلك، قم بإدراج العنصر في القائمة الكاملة لشريط التطبيقات
القائمة. |
always | ضع هذا العنصر دائمًا في شريط التطبيقات.
تجنَّب استخدام هذه السمة إلا إذا كان من الضروري أن يظهر العنصر دائمًا في الإجراء
الشريط. قد يؤدي ضبط عناصر متعددة لتظهر دائمًا كبنود عمل إلى تداخلها
مع واجهة مستخدم أخرى في شريط التطبيق. |
collapseActionView | عرض الإجراء المرتبط
مع بند العمل هذا (كما هو موضح من قِبل android:actionLayout أو
android:actionViewClass ) هو
قابلة للطي. تم طرح هذه الميزة في المستوى 14 من واجهة برمجة التطبيقات |
الاطّلاع على مقالة إضافة شريط التطبيقات
لمزيد من المعلومات.
وتم تقديم هذه المقاييس في المستوى 11 من واجهة برمجة التطبيقات.
android:actionLayout
- مورد التنسيق: تنسيق يُستخدم كطريقة عرض الإجراء.
لمزيد من المعلومات، يمكنك الاطّلاع على استخدام الإجراء.
جهات المشاهدة والإجراءات
وتم تقديم هذه المقاييس في المستوى 11 من واجهة برمجة التطبيقات.
android:actionViewClass
- اسم الصف. اسم فئة مؤهَّل بالكامل لـ
View
استخدامه كعرض الإجراء. على سبيل المثال:
"android.widget.SearchView"
استخدام SearchView
كعرض إجراء.
لمزيد من المعلومات، يمكنك الاطّلاع على استخدام الإجراء.
جهات المشاهدة والإجراءات
تحذير: في حال إخفاء مفاتيح فك تشفير الرمز باستخدام ProGuard أو أداة مشابهة،
تأكد من استبعاد الفئة التي تحددها في هذه السمة من إعادة التسمية، لأنها قد تؤدي إلى تعطيل
الأخرى.
وتم تقديم هذه المقاييس في المستوى 11 من واجهة برمجة التطبيقات.
android:actionProviderClass
- اسم الصف. اسم فئة مؤهل بالكامل لـ
ActionProvider
لاستخدامه بدلاً من بند العمل. على سبيل المثال:
عليك "android.widget.ShareActionProvider"
استخدام ShareActionProvider
.
لمزيد من المعلومات، يمكنك الاطّلاع على استخدام الإجراء.
جهات المشاهدة والإجراءات
تحذير: في حال إخفاء مفاتيح فك تشفير الرمز باستخدام ProGuard أو أداة مشابهة،
تأكد من استبعاد الفئة التي تحددها في هذه السمة من إعادة التسمية، لأنها قد تؤدي إلى تعطيل
الأخرى.
وتم طرح هذه الميزة في المستوى 14 من واجهة برمجة التطبيقات.
android:alphabeticShortcut
- السعر حرف لمفتاح الاختصار الأبجدي.
android:numericShortcut
- عدد صحيح. رقم لمفتاح الاختصار الرقمي.
android:alphabeticModifiers
- الكلمة الرئيسية. أداة تعديل للترتيب الأبجدي لعنصر القائمة
الاختصار. تتوافق القيمة التلقائية مع عنصر Control.
المفتاح. قيم صالحة:
القيمة | الوصف |
META |
يتطابق مع المفتاح الوصفي Meta. |
مفتاح CTRL |
يتوافق مع المفتاح الوصفي Control. |
نص بديل |
يتوافق مع المفتاح الوصفي Alt. |
التغيير |
يتوافق مع مفتاح التعريف Shift. |
الرمز |
يتطابق مع المفتاح الوصفي Sym. |
الوظيفة |
يتطابق مع المفتاح التعريفي Function. |
ملاحظة: يمكنك تحديد كلمات رئيسية متعددة في
. على سبيل المثال:
تشير السمة android:alphabeticModifiers="CTRL|SHIFT"
إلى
بحيث لتشغيل عنصر القائمة المقابل، يحتاج المستخدم إلى
اضغط على كل من مفتاحي Control وShift معًا
باستخدام الاختصار.
يمكنك استخدام طريقة setAlphabeticShortcut()
لإجراء ما يلي:
وتعيين قيم السمات آليًا. لمزيد من المعلومات
حول سمة alphabeticModifier
، يمكنك الاطّلاع على
alphabeticModifiers
android:numericModifiers
- الكلمة الرئيسية. معدِّل للاختصار الرقمي لعنصر القائمة.
وتتطابق القيمة التلقائية مع مفتاح Control. صالحة
القيم التالية:
القيمة | الوصف |
META |
يتطابق مع المفتاح الوصفي Meta. |
مفتاح CTRL |
يتوافق مع المفتاح الوصفي Control. |
نص بديل |
يتوافق مع المفتاح الوصفي Alt. |
التغيير |
يتوافق مع مفتاح التعريف Shift. |
الرمز |
يتطابق مع المفتاح الوصفي Sym. |
الوظيفة |
يتطابق مع المفتاح التعريفي Function. |
ملاحظة: يمكنك تحديد كلمات رئيسية متعددة في
. على سبيل المثال:
تشير السمة android:numericModifiers="CTRL|SHIFT"
إلى
بحيث لتشغيل عنصر القائمة المقابل، يحتاج المستخدم إلى
اضغط على كل من مفتاحي Control وShift معًا
باستخدام الاختصار.
يمكنك استخدام طريقة setNumericShortcut()
لضبط
قيم السمات آليًا. لمزيد من المعلومات عن
السمة numericModifier
، يمكنك الاطّلاع على
numericModifiers
android:checkable
- منطقي. True إذا كان العنصر قابلاً للتحديد.
android:checked
- منطقي. True إذا كان العنصر محددًا بشكل افتراضي.
android:visible
- منطقي. True إذا كان العنصر مرئيًا بشكل افتراضي.
android:enabled
- منطقي. True إذا كان العنصر مُفعَّلاً بشكلٍ تلقائي.
android:menuCategory
- الكلمة الرئيسية. القيمة المقابلة لـ
CATEGORY_*
في Menu
الثوابت التي تحدد أولوية العنصر. قيم صالحة:
القيمة | الوصف |
container | بالنسبة إلى العناصر التي تشكل جزءًا من
. |
system | بالنسبة للعناصر التي توفرها
. |
secondary | بالنسبة إلى العناصر التي يقدّمها المستخدم كعناصر ثانوية
(نادرًا ما يتم استخدامها). |
alternative | بالنسبة إلى العناصر التي تمثّل إجراءات بديلة
على البيانات المعروضة حاليًا. |
android:orderInCategory
- عدد صحيح. ترتيب أهمية العنصر داخل مجموعة.
<group>
- مجموعة قوائم لإنشاء مجموعة من العناصر التي تشترك في سمات، مثلاً ما إذا كانت
مرئية أو ممكَّنة أو قابلة للاختيار. تحتوي على عنصر
<item>
واحد أو أكثر. يجب أن تكون
التابعة لعنصر <menu>
.
السمات:
android:id
- رقم تعريف المورد. معرّف مورد فريد. لإنشاء معرّف مورد جديد لهذا العنصر،
استخدم النموذج:
"@+id/name"
تشير علامة الجمع إلى أن هذا تم إنشاؤه كـ
رقم التعريف
android:checkableBehavior
- الكلمة الرئيسية. نوع السلوك القابل للاختيار للمجموعة. قيم صالحة:
القيمة | الوصف |
none | غير قابل للاختيار. |
all | يمكن تحديد كل العناصر (استخدم مربّعات الاختيار). |
single | يمكن تحديد عنصر واحد فقط (استخدم الراديو
الأزرار). |
android:visible
- منطقي. True إذا كانت المجموعة مرئية.
android:enabled
- منطقي. صحيح إذا كانت المجموعة مفعّلة.
android:menuCategory
- الكلمة الرئيسية. القيمة المقابلة لـ
CATEGORY_*
في Menu
الثوابت التي تحدد أولوية المجموعة. قيم صالحة:
القيمة | الوصف |
container | بالنسبة إلى المجموعات التي تشكّل جزءًا من
. |
system | بالنسبة إلى المجموعات المقدَّمة من:
. |
secondary | بالنسبة إلى المجموعات التي يوفّرها المستخدم بشكل ثانوي
(نادرًا ما يتم استخدامها). |
alternative | للمجموعات التي تمثّل إجراءات بديلة
على البيانات المعروضة حاليًا. |
android:orderInCategory
- عدد صحيح. تمثّل هذه السمة الترتيب التلقائي للعناصر ضمن الفئة.
- مثلا:
- تم حفظ ملف XML في
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>
يعمل رمز التطبيق التالي على تضخيم القائمة من خلال معاودة الاتصال onCreateOptionsMenu(Menu)
وتوضيح الزر عند النقر
معاودة الاتصال لاثنين من العناصر:
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.
}