新增及處理動作

應用程式列可讓您新增使用者動作按鈕。這項功能可讓您 應用程式頂端為目前情境最重要的動作。 舉例來說,相片瀏覽應用程式可能會顯示分享建立 。時間 當使用者查看單張相片時,應用程式可能會顯示裁剪篩選器按鈕。

應用程式列中的空間有限。如果應用程式宣告的動作數量超過上限 在應用程式列中,應用程式列會將過多動作傳送至「溢位」選單。 應用程式也可以指定一律顯示在溢位選單中。 而不是顯示在應用程式列

顯示「Now in Android」應用程式與動作列圖示的圖片
圖 1:「Now in Android」中的動作圖示應用程式。
,瞭解如何調查及移除這項存取權。

新增動作按鈕

動作溢位中的所有動作按鈕和其他項目都會 在 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);

    }
}