Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
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 создается в обработчике событий нажатия кнопки (который называется 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 ();
};
Обработка событий меню
Когда пользователь выбирает пункт меню, событие click MenuItemClick будет поднято, и меню будет отклонено. Касание в любом месте за пределами меню просто уволит его. В любом случае при закрытии меню будет возникать его "Закрыть". Следующий код добавляет обработчики событий для MenuItemClick событий и 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 ();
};
