Xamarin.Android 快捷功能表

PopupMenu (也稱為快捷方式功能表) 是錨定至特定檢視的功能表。 在下列範例中,單一活動包含按鈕。 當使用者點選按鈕時,會顯示三個專案的快捷功能表:

具有按鈕和三個專案快捷功能表的應用程式範例

建立快捷功能表

第一個步驟是建立功能表的功能表資源檔,並將它 放在 [資源/] 功能表中。 例如,下列 XML 是上一個螢幕快照中顯示之三個專案功能表的程式代碼: Resources/menu/popup_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/item1"
          android:title="item 1" />
    <item android:id="@+id/item1"
          android:title="item 2" />
    <item android:id="@+id/item1"
          android:title="item 3" />
</menu>

接下來,建立的 PopupMenu 實例,並將其錨定至其檢視。 當您建立 的實例 PopupMenu時,您會將其建構函式傳遞至 Context 的參考,以及要附加功能表的檢視。 因此,快顯功能表會在建構期間錨定至此檢視。

在下列範例中, PopupMenu 會在按鈕的 click 事件處理程式中建立 (名為 showPopupMenu)。 此按鈕也是錨定 所在的檢視 PopupMenu ,如下列程式代碼範例所示:

showPopupMenu.Click += (s, arg) => {
    PopupMenu menu = new PopupMenu (this, showPopupMenu);
};

最後,快顯功能表必須與 稍早建立的功能表資源擴充 。 在下列範例中,會新增功能表的 Inflate 方法呼叫,並呼叫其 Show 方法來顯示它:

showPopupMenu.Click += (s, arg) => {
    PopupMenu menu = new PopupMenu (this, showPopupMenu);
    menu.Inflate (Resource.Menu.popup_menu);
    menu.Show ();
};

處理功能表事件

當使用者選取功能表項時, 將會引發 MenuItemClick click 事件,並關閉功能表。 點選功能表外的任何位置,只會將其關閉。 不論是哪一種情況,當功能表關閉時,就會引發其 DismissEvent 。 下列程式代碼會為 和 DismissEvent 事件新增事件處理程式MenuItemClick

showPopupMenu.Click += (s, arg) => {
    PopupMenu menu = new PopupMenu (this, showPopupMenu);
    menu.Inflate (Resource.Menu.popup_menu);

    menu.MenuItemClick += (s1, arg1) => {
        Console.WriteLine ("{0} selected", arg1.Item.TitleFormatted);
    };

    menu.DismissEvent += (s2, arg2) => {
        Console.WriteLine ("menu dismissed");
    };
    menu.Show ();
};