בסרגל האפליקציות אפשר להוסיף לחצנים לפעולות של משתמשים. התכונה הזו מאפשרת להציג בחלק העליון של האפליקציה את הפעולות החשובות ביותר בהתאם להקשר הנוכחי. לדוגמה, באפליקציה לגלישה בתמונות יכול להיות שיוצגו הלחצנים שיתוף ויצירת אלבום בחלק העליון כשהמשתמש צופה בגלריה. כשהמשתמש צופה בתמונה מסוימת, יכול להיות שיוצגו באפליקציה הלחצנים חיתוך ומסנן.
המרחב בסרגל האפליקציות מוגבל. אם האפליקציה מצהירה על יותר פעולות ממה שאפשר להציג בסרגל האפליקציות, הסרגל שולח את הפעולות הנוספות לתפריט overflow. האפליקציה יכולה גם לציין שפעולה תמיד תוצג בתפריט האפשרויות הנוספות, במקום להופיע בסרגל האפליקציות.
![תמונה שבה מוצגת אפליקציית Now ל-Android עם סמל של סרגל פעולות](https://developer.android.google.cn/static/images/ui/notifications/actions_actionbar.png?authuser=0&hl=he)
הוספת לחצני פעולה
כל כפתורי הפעולה ופריטים אחרים שזמינים בתפריט הנפתח של הפעולות מוגדרים במשאב תפריט בפורמט 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 יש הרבה סמלים שימושיים.
תגובה לפעולות
כשהמשתמש בוחר באחד מהפריטים בסרגל האפליקציות, המערכת קוראת לשיטת ה-callback 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); } }