סרגל האפליקציה מאפשר להוסיף כפתורים לפעולות של המשתמשים. התכונה הזו מאפשרת לכם להציב את הפעולות הכי חשובות בהקשר הנוכחי בחלק העליון של האפליקציה. לדוגמה, באפליקציה לעיון בתמונות, אם המשתמש מעיין בתמונות במגילה, יכול להיות שיוצגו בחלק העליון לחצנים של שיתוף ויצירת אלבום. כשהמשתמש מסתכל על תמונה ספציפית, יכול להיות שיוצגו באפליקציה הלחצנים חיתוך ופילטר.
יש מקום מוגבל בסרגל האפליקציות. אם אפליקציה מצהירה על יותר פעולות מכפי שאפשר להציג בסרגל האפליקציה, הפעולות העודפות מועברות לתפריט הצגה של עוד אפשרויות. האפליקציה יכולה גם לציין שפעולה מסוימת תמיד תוצג בתפריט האפשרויות הנוספות, במקום בסרגל האפליקציות.
הוספת כפתורי פעולה
כל כפתורי הפעולה והפריטים האחרים שזמינים בתפריט הפעולות הנוספות מוגדרים במשאב תפריט ב-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"—כמו בפעולה favorite בקוד לדוגמה—הפעולה מוצגת כלחצן אם יש מקום בשורת האפליקציות. אם אין מספיק מקום, הפעולות העודפות נשלחות לתפריט האפשרויות הנוספות. אם מגדירים app:showAsAction="never" – כמו בפעולה settings בקוד לדוגמה – הפעולה תמיד מופיעה בתפריט האפשרויות הנוספות ולא בסרגל האפליקציות.
המערכת משתמשת בסמל של הפעולה כלחצן הפעולה אם הפעולה מוצגת בסרגל האפליקציות. אפשר למצוא הרבה סמלים שימושיים ב-Material Icons.
תגובה לפעולות
כשמשתמש בוחר אחד מהפריטים בסרגל האפליקציות, המערכת קוראת לשיטת הקריאה החוזרת onOptionsItemSelected() של הפעילות ומעבירה אובייקט MenuItem כדי לציין איזה פריט נבחר. בהטמעה של onOptionsItemSelected(), מבצעים קריאה ל-method MenuItem.getItemId() כדי לקבוע על איזה פריט הקישו. המזהה שמוחזר תואם לערך שהצהרתם במאפיין android:id של רכיב <item> המתאים.
לדוגמה, קטע הקוד הבא בודק איזו פעולה המשתמש בוחר. אם השיטה לא מזהה את פעולת המשתמש, היא מפעילה את שיטת מחלקת העל:
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); } }