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 ();
};