Udostępnij za pośrednictwem


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:

Przykład aplikacji z przyciskiem i menu podręcznym 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 PopupMenuklasy 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 ();
};