PopupMenupublic class PopupMenu extends Object implements MenuBuilder.Callback, MenuPresenter.CallbackStatic library support version of the framework's {@link android.widget.PopupMenu}.
Used to write apps that run on platforms prior to Android 3.0. When running
on Android 3.0 or above, this implementation is still used; it does not try
to switch to the framework's implementation. See the framework SDK
documentation for a class overview. |
Fields Summary |
---|
private android.content.Context | mContext | private android.support.v7.internal.view.menu.MenuBuilder | mMenu | private android.view.View | mAnchor | private android.support.v7.internal.view.menu.MenuPopupHelper | mPopup | private OnMenuItemClickListener | mMenuItemClickListener | private OnDismissListener | mDismissListener | private View.OnTouchListener | mDragListener |
Constructors Summary |
---|
public PopupMenu(android.content.Context context, android.view.View anchor)Construct a new PopupMenu.
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 View.OnTouchListener | getDragToOpenListener()Returns an {@link android.view.View.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 ListPopupWindow.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 SupportMenuInflater(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(android.support.v7.internal.view.menu.MenuBuilder menu, boolean allMenusAreClosing)
if (mDismissListener != null) {
mDismissListener.onDismiss(this);
}
| public void | onCloseSubMenu(android.support.v7.internal.view.menu.SubMenuBuilder menu)
| public boolean | onMenuItemSelected(android.support.v7.internal.view.menu.MenuBuilder menu, android.view.MenuItem item)
if (mMenuItemClickListener != null) {
return mMenuItemClickListener.onMenuItemClick(item);
}
return false;
| public void | onMenuModeChange(android.support.v7.internal.view.menu.MenuBuilder menu)
| public boolean | onOpenSubMenu(android.support.v7.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.support.v7.widget.PopupMenu$OnDismissListener listener)Set a listener that will be notified when this menu is dismissed.
mDismissListener = listener;
| public void | setOnMenuItemClickListener(android.support.v7.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();
|
|