Xamarin.Android 팝업 메뉴
PopupMenu(바로 가기 메뉴라고도 함)는 특정 보기에 고정되는 메뉴입니다. 다음 예제에서 단일 활동에는 단추가 포함됩니다. 사용자가 단추를 탭하면 3개 항목 팝업 메뉴가 표시됩니다.
팝업 메뉴 만들기
첫 번째 단계는 메뉴에 대한 메뉴 리소스 파일을 만들고 리소스/메뉴에 배치하는 것입니다. 예를 들어 다음 XML은 이전 스크린샷에 표시된 3개 항목 메뉴의 코드인 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 ();
};
메뉴 이벤트 처리
사용자가 메뉴 항목을 선택하면 MenuItemClick 클릭 이벤트가 발생하고 메뉴가 해제됩니다. 메뉴 외부의 아무 곳이나 탭하면 해제됩니다. 두 경우 모두 메뉴가 해제되면 해당 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 ();
};