מקור מידע של תפריט

משאב תפריט מגדיר תפריט של אפליקציה – תפריט אפשרויות, תפריט הקשר או תפריט משנה – יכול להיות גבוה מ-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>
רכיבים:
חובה. הוא חייב להיות צומת הרמה הבסיסית (root). מכיל <item> ו/או רכיבי <group>.

מאפיינים:

xmlns:android
מרחב שמות XML. חובה. מגדיר את מרחב השמות של XML, חייב להיות "http://schemas.android.com/apk/res/android".
<item>
אפשרות בתפריט. ייתכן שהיא תכלול רכיב <menu> (לתפריט משנה). חייב להיות צאצא של רכיב <menu> או <group>.

מאפיינים:

android:id
מזהה משאב מזהה משאב ייחודי. כדי ליצור מזהה משאב חדש לפריט, משתמשים בטופס הבא: "@+id/name" סמל הפלוס מציין שמחרוזת הזו נוצרה ID.
android:title
משאב מחרוזת. כותרת התפריט כמשאב מחרוזת או כמחרוזת גולמית.
android:titleCondensed
משאב מחרוזת. שם מרוכז כמשאב מחרוזת או מחרוזת גולמית. הזה הכותרת משמשת למצבים שבהם השם הרגיל ארוך מדי.
android:icon
משאב שניתן לשרטוט. תמונה שתשמש כסמל של אפשרות בתפריט.
android:onClick
שם ה-method. השיטה להפעיל כאשר לוחצים על האפשרות הזו בתפריט. יש להצהיר על השיטה כציבורית בפעילות. הוא מקבל MenuItem בתור בלבד, שמציין את הפריט שעליו המשתמש לחץ. השיטה הזו מקבלת עדיפות על פני השיטה הרגילה קריאה חוזרת אל onOptionsItemSelected(). לצפייה בסוף הדף הזה.

אזהרה: אם מבצעים ערפול קוד (obfuscation) באמצעות ProGuard או כלי דומה, חשוב להחריג את השיטה שציינתם במאפיין הזה כדי לא לשנות את השם, כי היא עלולה לשבש את החדשה.

התכונה הופעלה ברמת API 11.

android:showAsAction
מילת מפתח. מתי ואיך הפריט הזה מופיע כפעולה לביצוע באפליקציה בר. אפשרות בתפריט יכולה להופיע כפעולה לביצוע רק כשהפעילות כוללת סרגל האפליקציות. הערכים התקפים:
ערךתיאור
ifRoomלמקם את הפריט הזה רק ב בסרגל האפליקציות, אם יש מקום להוסיף אותו. אם אין מקום לכולם הפריטים המסומנים "ifRoom", הפריטים עם האיכות הנמוכה ביותר ערכי orderInCategory מוצגים כפעולות, וגם שאר הפריטים מוצגים בתפריט האפשרויות הנוספות.
withTextכלול גם את טקסט הכותרת (מוגדר עד android:title) עם הפעולה לביצוע. אפשר לכלול את הערך הזה יחד עם מאפיין אחד בין היתר כדגלים, שמפרידים ביניהם באמצעות קו ניצב |.
neverאף פעם אל תציב את הפריט הזה בסרגל של האפליקציה. במקום זאת, רשום את הפריט באפשרויות הנוספות של סרגל האפליקציה תפריט
alwaysיש למקם את הפריט הזה תמיד בסרגל האפליקציה. אין להשתמש באפשרות הזו, אלא אם חשוב מאוד שהפריט תמיד יופיע בפעולה. בר. אם מגדירים כמה פריטים כך שתמיד יופיעו כפעולות לביצוע, יכול להיות שהם יחפפו. עם ממשק משתמש אחר בסרגל האפליקציות.
collapseActionViewתצוגת הפעולה משויכת עם הפעולה הזו לביצוע (כפי שהוצהר על ידי android:actionLayout או android:actionViewClass) הוא ניתן לכיווץ.
הושק ברמת API 14.

איך מוסיפים את סרגל האפליקציות אפשר לקבל מידע נוסף.

התכונה הופעלה ברמת API 11.

android:actionLayout
משאב פריסה. פריסה שתשמש כתצוגת פעולה.

מידע נוסף זמין במאמר שימוש בפעולה ספקים של צפיות ופעולות.

התכונה הופעלה ברמת API 11.

android:actionViewClass
שם הכיתה. שם מחלקה מוגדר במלואו של View לשימוש כתצוגת פעולה. לדוגמה, "android.widget.SearchView" כדי להשתמש בתכונה SearchView כתצוגה של פעולה.

מידע נוסף זמין במאמר שימוש בפעולה ספקים של צפיות ופעולות.

אזהרה: אם מבצעים ערפול קוד (obfuscation) באמצעות ProGuard או כלי דומה, חשוב להחריג את המחלקה שציינתם במאפיין הזה כדי לא לשנות את השם שלה, כי היא עלולה לשבש את החדשה.

התכונה הופעלה ברמת API 11.

android:actionProviderClass
שם הכיתה. שם מחלקה מוגדר במלואו שבו ActionProvider יכול להשתמש במקום הפעולה לביצוע. לדוגמה, "android.widget.ShareActionProvider" כדי להשתמש ב-ShareActionProvider.

מידע נוסף זמין במאמר שימוש בפעולה ספקים של צפיות ופעולות.

אזהרה: אם מבצעים ערפול קוד (obfuscation) באמצעות ProGuard או כלי דומה, חשוב להחריג את המחלקה שציינתם במאפיין הזה כדי לא לשנות את השם שלה, כי היא עלולה לשבש את החדשה.

התכונה הופעלה ברמת API 14.

android:alphabeticShortcut
צ'אר. תו למקש הקיצור האלפביתי.
android:numericShortcut
מספר שלם. מספר למקש הקיצור המספרי.
android:alphabeticModifiers
מילת מפתח. מקש צירוף של האפשרות בתפריט מקש קיצור. ערך ברירת המחדל תואם לעמודה Control מקש. הערכים התקפים:
ערךתיאור
META תואם למטא מפתח Meta.
Ctrl תואם למטא-מקש Control.
ALT תואם למטא מקש Alt.
SHIFT תואם למטא מקש Shift.
SYM תואם למטא מפתח Sym.
פונקציות תואם למטא מפתח Function.

הערה: ניתן לציין כמה מילות מפתח בכל מילת מפתח . לדוגמה, android:alphabeticModifiers="CTRL|SHIFT" מציין שכדי להפעיל את האפשרות המתאימה בתפריט, המשתמש צריך ללחוץ גם על מקשי המטא Control ו-Shift באמצעות קיצור הדרך.

אפשר להשתמש בשיטה setAlphabeticShortcut() כדי להגדיר את ערכי המאפיינים באופן פרוגרמטי. אפשר לקבל מידע נוסף על המאפיין alphabeticModifier, ראו alphabeticModifiers.

android:numericModifiers
מילת מפתח. מקש צירוף לקיצור הדרך המספרי של האפשרות בתפריט. ערך ברירת המחדל תואם למפתח Control. נתונים תקפים ערכים:
ערךתיאור
META תואם למטא מפתח Meta.
Ctrl תואם למטא-מקש Control.
ALT תואם למטא מקש Alt.
SHIFT תואם למטא מקש Shift.
SYM תואם למטא מפתח Sym.
פונקציות תואם למטא מפתח Function.

הערה: ניתן לציין כמה מילות מפתח בכל מילת מפתח . לדוגמה, android:numericModifiers="CTRL|SHIFT" מציין שכדי להפעיל את האפשרות המתאימה בתפריט, המשתמש צריך ללחוץ גם על מקשי המטא Control ו-Shift באמצעות קיצור הדרך.

אפשר להשתמש ב-method setNumericShortcut() כדי להגדיר את ערכי המאפיינים באופן פרוגרמטי. מידע נוסף על המאפיין numericModifier: numericModifiers.

android:checkable
בוליאני. הערך הוא True אם ניתן לסמן את הפריט.
android:checked
בוליאני. הערך הוא True אם הפריט מסומן כברירת מחדל.
android:visible
בוליאני. הערך הוא True אם הפריט גלוי כברירת מחדל.
android:enabled
בוליאני. הערך הוא True אם הפריט מופעל כברירת מחדל.
android:menuCategory
מילת מפתח. ערך שתואם ל-Menu CATEGORY_* קבועים, שמגדירים את העדיפות של הפריט. הערכים התקפים:
ערךתיאור
containerעבור פריטים שהם חלק מאגר תגים.
systemלגבי פריטים שסופקו על ידי המערכת.
secondaryלפריטים שסופקו על ידי המשתמשים כמשניים אפשרויות (בשימוש לעתים רחוקות).
alternativeלפריטים שהם פעולות חלופיות על הנתונים שמוצגים כרגע.
android:orderInCategory
מספר שלם. סדר החשיבות של הפריט בקבוצה.
<group>
קבוצת תפריטים, כדי ליצור אוסף של פריטים שיש להם מאפיינים משותפים, למשל אם הם גלוי, מופעל או ניתן לבחירה. מכיל רכיב <item> או יותר. חייב להיות צאצא של רכיב <menu>.

מאפיינים:

android:id
מזהה משאב מזהה משאב ייחודי. כדי ליצור מזהה משאב חדש לפריט הזה: יש להשתמש בטופס: "@+id/name" סמל הפלוס מציין שמחרוזת הזו נוצרה ID.
android:checkableBehavior
מילת מפתח. סוג ההתנהגות שניתן לבחור עבור הקבוצה. הערכים התקפים:
ערךתיאור
noneלא ניתן לבחירה.
allניתן לבחור את כל הפריטים (יש להשתמש בתיבות סימון).
singleניתן לבחור רק פריט אחד (יש להשתמש ברדיו) ).
android:visible
בוליאני. הערך הוא True אם הקבוצה גלויה.
android:enabled
בוליאני. הערך הוא True אם הקבוצה מופעלת.
android:menuCategory
מילת מפתח. ערך שתואם ל-Menu CATEGORY_* קבועים, שמגדירים את העדיפות של הקבוצה. הערכים התקפים:
ערךתיאור
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>

קוד האפליקציה הבא מגדיל את התפריט מהקריאה החוזרת (callback) של onCreateOptionsMenu(Menu) ומצהיר גם על פעולות לחיצה קריאה חוזרת (callback) לשניים מהפריטים:

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