Bagikan melalui


Xamarin.Android PopUp Menu

PopupMenu (juga disebut menu pintasan) adalah menu yang berlabuh ke tampilan tertentu. Dalam contoh berikut, satu Aktivitas berisi tombol. Saat pengguna mengetuk tombol, menu popup tiga item ditampilkan:

Contoh aplikasi dengan tombol dan menu pop-up tiga item

Membuat Menu Popup

Langkah pertama adalah membuat file sumber daya menu untuk menu dan menempatkannya di Sumber Daya/menu. Misalnya, XML berikut adalah kode untuk menu tiga item yang ditampilkan di cuplikan layar sebelumnya, Sumber Daya/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>

Selanjutnya, buat instans PopupMenu dan jangkar ke tampilannya. Saat Anda membuat instans PopupMenu, Anda meneruskan konstruktornya referensi ke Context serta tampilan tempat menu akan dilampirkan. Akibatnya, menu popup berlabuh ke tampilan ini selama konstruksinya.

Dalam contoh berikut, PopupMenu dibuat di penanganan aktivitas klik untuk tombol (yang bernama showPopupMenu). Tombol ini juga merupakan tampilan tempat berlabuh, seperti yang PopupMenu ditunjukkan dalam contoh kode berikut:

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

Terakhir, menu popup harus difungsikan dengan sumber daya menu yang dibuat sebelumnya. Dalam contoh berikut, panggilan ke metode Inflate menu ditambahkan dan metode Tampilkan dipanggil untuk menampilkannya:

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

Menangani Peristiwa Menu

Saat pengguna memilih item menu, peristiwa klik MenuItemClick akan dinaikkan dan menu akan dihentikan. Mengetuk di mana saja di luar menu hanya akan menutupnya. Dalam kedua kasus, ketika menu diberhentikan, DismissEvent-nya akan dinaikkan. Kode berikut menambahkan penanganan aktivitas untuk MenuItemClick peristiwa dan 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 ();
};