Menu podręczne rozszerzenia Xamarin.Android
Menu podręczne (nazywane również menu skrótami) to menu, które jest zakotwiczone w określonym widoku. W poniższym przykładzie pojedyncze działanie zawiera przycisk. Gdy użytkownik naciągnie przycisk, zostanie wyświetlone menu podręczne z trzema elementami:
Tworzenie menu podręcznego
Pierwszym krokiem jest utworzenie pliku zasobu menu dla menu i umieszczenie go w obszarze Zasoby/menu. Na przykład poniższy kod XML to kod menu z trzema elementami wyświetlanymi na poprzednim zrzucie ekranu , Zasoby/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>
Następnie utwórz wystąpienie PopupMenu
obiektu i zakotwiczyć je w widoku. Podczas tworzenia wystąpienia PopupMenu
klasy należy przekazać jego konstruktorowi odwołanie do obiektu Context
, a także widok, do którego zostanie dołączone menu. W związku z tym menu podręczne jest zakotwiczone do tego widoku podczas jego budowy.
W poniższym przykładzie element PopupMenu
jest tworzony w procedurze obsługi zdarzeń kliknięcia dla przycisku (o nazwie showPopupMenu
). Ten przycisk jest również widokiem, do którego PopupMenu
jest zakotwiczony, jak pokazano w poniższym przykładzie kodu:
showPopupMenu.Click += (s, arg) => {
PopupMenu menu = new PopupMenu (this, showPopupMenu);
};
Na koniec menu podręczne musi być zawyżone za pomocą zasobu menu, który został utworzony wcześniej. W poniższym przykładzie dodano wywołanie metody Inflate menu, a jej metoda Show jest wywoływana w celu jej wyświetlenia:
showPopupMenu.Click += (s, arg) => {
PopupMenu menu = new PopupMenu (this, showPopupMenu);
menu.Inflate (Resource.Menu.popup_menu);
menu.Show ();
};
Obsługa zdarzeń menu
Gdy użytkownik wybierze element menu, zostanie wyświetlone zdarzenie MenuItemClick kliknięcie, a menu zostanie odrzucone. Naciśnięcie dowolnego miejsca poza menu spowoduje po prostu jego odrzucenie. W obu przypadkach, gdy menu zostanie odrzucone, zostanie podniesiona jego wartość DismissEvent . Poniższy kod dodaje programy obsługi zdarzeń zarówno dla zdarzeń, jak MenuItemClick
i DismissEvent
:
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 ();
};