مورد القائمة

يحدد مورد القائمة قائمة تطبيق - قائمة خيارات أو قائمة سياق أو قائمة فرعية - والتي ويمكن تكبيره باستخدام 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.
}