PopupMenupublic class PopupMenu extends Object implements MenuBuilder.Callback, MenuPresenter.CallbackA PopupMenu displays a {@link Menu} in a modal popup window anchored to a {@link View}.
The popup will appear below the anchor view if there is room, or above it if there is not.
If the IME is visible the popup will not overlap it until it is touched. Touching outside
of the popup will dismiss it. |
Fields Summary |
---|
private final android.content.Context | mContext | private final com.android.internal.view.menu.MenuBuilder | mMenu | private final android.view.View | mAnchor | private final com.android.internal.view.menu.MenuPopupHelper | mPopup | private OnMenuItemClickListener | mMenuItemClickListener | private OnDismissListener | mDismissListener | private android.view.View.OnTouchListener | mDragListener |
Constructors Summary |
---|
public PopupMenu(android.content.Context context, android.view.View anchor)Constructor to create a new popup menu with an anchor view.
this(context, anchor, Gravity.NO_GRAVITY);
| public PopupMenu(android.content.Context context, android.view.View anchor, int gravity)Constructor to create a new popup menu with an anchor view and alignment
gravity.
this(context, anchor, gravity, R.attr.popupMenuStyle, 0);
| public PopupMenu(android.content.Context context, android.view.View anchor, int gravity, int popupStyleAttr, int popupStyleRes)Constructor a create a new popup menu with a specific style.
mContext = context;
mMenu = new MenuBuilder(context);
mMenu.setCallback(this);
mAnchor = anchor;
mPopup = new MenuPopupHelper(context, mMenu, anchor, false, popupStyleAttr, popupStyleRes);
mPopup.setGravity(gravity);
mPopup.setCallback(this);
|
Methods Summary |
---|
public void | dismiss()Dismiss the menu popup.
mPopup.dismiss();
| public android.view.View.OnTouchListener | getDragToOpenListener()Returns an {@link OnTouchListener} that can be added to the anchor view
to implement drag-to-open behavior.
When the listener is set on a view, touching that view and dragging
outside of its bounds will open the popup window. Lifting will select the
currently touched list item.
Example usage:
PopupMenu myPopup = new PopupMenu(context, myAnchor);
myAnchor.setOnTouchListener(myPopup.getDragToOpenListener());
if (mDragListener == null) {
mDragListener = new ForwardingListener(mAnchor) {
@Override
protected boolean onForwardingStarted() {
show();
return true;
}
@Override
protected boolean onForwardingStopped() {
dismiss();
return true;
}
@Override
public ListPopupWindow getPopup() {
// This will be null until show() is called.
return mPopup.getPopup();
}
};
}
return mDragListener;
| public android.view.Menu | getMenu()
return mMenu;
| public android.view.MenuInflater | getMenuInflater()
return new MenuInflater(mContext);
| public void | inflate(int menuRes)Inflate a menu resource into this PopupMenu. This is equivalent to calling
popupMenu.getMenuInflater().inflate(menuRes, popupMenu.getMenu()).
getMenuInflater().inflate(menuRes, mMenu);
| public void | onCloseMenu(com.android.internal.view.menu.MenuBuilder menu, boolean allMenusAreClosing)
if (mDismissListener != null) {
mDismissListener.onDismiss(this);
}
| public void | onCloseSubMenu(com.android.internal.view.menu.SubMenuBuilder menu)
| public boolean | onMenuItemSelected(com.android.internal.view.menu.MenuBuilder menu, android.view.MenuItem item)
if (mMenuItemClickListener != null) {
return mMenuItemClickListener.onMenuItemClick(item);
}
return false;
| public void | onMenuModeChange(com.android.internal.view.menu.MenuBuilder menu)
| public boolean | onOpenSubMenu(com.android.internal.view.menu.MenuBuilder subMenu)
if (subMenu == null) return false;
if (!subMenu.hasVisibleItems()) {
return true;
}
// Current menu will be dismissed by the normal helper, submenu will be shown in its place.
new MenuPopupHelper(mContext, subMenu, mAnchor).show();
return true;
| public void | setOnDismissListener(android.widget.PopupMenu$OnDismissListener listener)Set a listener that will be notified when this menu is dismissed.
mDismissListener = listener;
| public void | setOnMenuItemClickListener(android.widget.PopupMenu$OnMenuItemClickListener listener)Set a listener that will be notified when the user selects an item from the menu.
mMenuItemClickListener = listener;
| public void | show()Show the menu popup anchored to the view specified during construction.
mPopup.show();
|
|