應用程式列可讓您新增使用者動作按鈕。這項功能可讓您 應用程式頂端為目前情境最重要的動作。 舉例來說,相片瀏覽應用程式可能會顯示分享和建立 。時間 當使用者查看單張相片時,應用程式可能會顯示裁剪, 篩選器按鈕。
應用程式列中的空間有限。如果應用程式宣告的動作數量超過上限 在應用程式列中,應用程式列會將過多動作傳送至「溢位」選單。 應用程式也可以指定一律顯示在溢位選單中。 而不是顯示在應用程式列
新增動作按鈕
動作溢位中的所有動作按鈕和其他項目都會
在 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 動作,該動作一律會列在
溢位選單,不會顯示在應用程式列中。
如果動作顯示,系統會使用動作圖示做為動作按鈕 。您可以在 Google Cloud 控制台 質感設計圖示。
回應動作
當使用者選取其中一個應用程式列項目時,系統會呼叫您的
活動的
onOptionsItemSelected()
回呼方法,並將
MenuItem
個物件
指出使用者輕觸的項目。實作
onOptionsItemSelected()
,請呼叫
MenuItem.getItemId()
方法,判斷使用者輕觸的項目。傳回的 ID 與您
在對應的 <item>
元素中宣告
android:id
屬性。
舉例來說,下列程式碼片段會檢查使用者選取的動作。 如果方法無法辨識使用者的動作,則會叫用父類別 方法:
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); } }