概述:
Popup menu是挂靠在某一个View的菜单, 在点击View的时候可以弹出. 常见的应用场景有:
1. 未指定的内容指定一个弹出的菜单, 比如Gmail的弹出菜单:
相对于context menu, Popup menu并不影响选中的View. Contextmenu通常是对选中的View的操作.
2. 为某个操作提供更详细的操作.
3. 提供一个类似下拉菜单的操作.(好无聊..)
Popup menu只能用于API11及以上版本.
创建一个Popupmenu的步骤:
1. 实例化一个PopupMenu对象. 需要两个参数, 一个是Context, 另一个是需要悬靠的View. 它会在指定的View旁边出现.
2. 使用MenuInflater来加载菜单资源到PopupMenu.getMenu()返回的Menu对象中. 在API14及以上版本中我们可以使用PopupMenu.inflate()方法代替.
3. 调用PopupMenu.show()方法.
栗子, 首先创建一个button, Popup Menu响应这个button的点击事件:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup"/>
然后在Activity中实现show:
public void showPopup(View v){
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.actions, popup.getMenu());
popup.show();
}
Menu将会在用户点击某个item或者点击菜单外的区域的时候消失, 我们可以通过PopupMenu.OnDismissListener()方法来监听这一事件.
处理Popup Menu的点击事件:
跟所有的点击事件差不多, 我们需要通过监听器监听点击事件. 监听器是PopupMenu.OnMenuItemClickListener, 可以通过PopupMenu的setOnMenuItemclickListener()方法来设置这一事件. 当用户点击某个item,Android将会调用监听器的onMenuitemClick()回调方法. 栗子:
public void showMenu(View v){
PopupMenu popup = new PopupMenu(this, v);<