בסרגל האפליקציה אפשר להוסיף לחצנים לפעולות של משתמשים. התכונה הזו מאפשרת מופיעות הפעולות החשובות ביותר בהקשר הנוכחי בחלק העליון של האפליקציה. לדוגמה, באפליקציית דפדוף בתמונות עשויה להופיע האפשרויות שיתוף ויצירה אלבום בחלק העליון כאשר המשתמש מעיין בזיכרון התמונות שלו. מתי שהמשתמש מסתכל על תמונה מסוימת, יכול להיות שיופיעו באפליקציה חיתוך סינון.
המקום בסרגל האפליקציות מוגבל. אם האפליקציה מצהירה על מספר הפעולות המקסימלי המותר בסרגל של האפליקציה, סרגל האפליקציה שולח את הפעולות העודפות לתפריט אפשרויות נוספות. האפליקציה יכולה גם לציין שפעולה תמיד תוצג בתפריט האפשרויות הנוספות, במקום שהיא תוצג בסרגל האפליקציות.
הוספת לחצני פעולה
כל לחצני הפעולה ופריטים אחרים שזמינים באפשרויות הנוספות הם
מוגדר ב-XML.
משאב תפריט. כדי להוסיף
פעולות לסרגל הפעולות, יוצרים קובץ XML חדש
ספריית res/menu/
.
הוספת
<item>
עבור כל פריט שברצונך לכלול בסרגל הפעולות, כפי שמוצג
דוגמה לקובץ XML של התפריט לדוגמה:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- "Mark Favorite", must appear as action button if possible. --> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite_black_48dp" android:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings, must always be in the overflow. --> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
המאפיין app:showAsAction
מציין אם הפעולה
מוצג כלחצן בסרגל האפליקציה. אם מגדירים
app:showAsAction="ifRoom"
- כמו בקוד לדוגמה
הפעולה מועדפים – הפעולה תוצג כלחצן אם יש מקום
בסרגל האפליקציה. אם אין מספיק מקום, הפעולות העודפות יישלחו אל
אפשרויות נוספות. אם מגדירים את app:showAsAction="never"
— כמו
פעולת ההגדרות של קוד לדוגמה – הפעולה תמיד רשומה
האפשרויות הנוספות ולא מוצגות בסרגל האפליקציה.
אם הפעולה מוצגת, המערכת תשתמש בסמל הפעולה כלחצן הפעולה. בסרגל של האפליקציה. ניתן למצוא סמלים שימושיים רבים ב- סמלי חומרים.
פעולות לביצוע
כשהמשתמש בוחר באחת מהפריטים בסרגל האפליקציות, המערכת שולחת קריאה
של פעילות
onOptionsItemSelected()
שיטת הקריאה החוזרת (callback) ומעבירה
אובייקט MenuItem
כדי לציין על איזה פריט הם הקישו. בהטמעה של
onOptionsItemSelected()
, קוראים לפונקציה
MenuItem.getItemId()
כדי לקבוע על איזה פריט הם מקישים. המזהה שהוחזר תואם לערך
להצהיר ברכיב ה-<item>
המתאים
android:id
.
לדוגמה, קטע הקוד הבא בודק איזו פעולה המשתמש בוחר. אם השיטה לא מזהה את הפעולה של המשתמש, היא תפעיל את מחלקה-העל method:
Kotlin
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { R.id.action_settings -> { // User chooses the "Settings" item. Show the app settings UI. true } R.id.action_favorite -> { // User chooses the "Favorite" action. Mark the current item as a // favorite. true } else -> { // The user's action isn't recognized. // Invoke the superclass to handle it. super.onOptionsItemSelected(item) } }
Java
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: // User chooses the "Settings" item. Show the app settings UI. return true; case R.id.action_favorite: // User chooses the "Favorite" action. Mark the current item as a // favorite. return true; default: // The user's action isn't recognized. // Invoke the superclass to handle it. return super.onOptionsItemSelected(item); } }