FileDocCategorySizeDatePackage
PopupMenu.javaAPI DocAndroid 5.1 API9433Thu Mar 12 22:22:56 GMT 2015android.support.v7.widget

PopupMenu

public class PopupMenu extends Object implements MenuBuilder.Callback, MenuPresenter.Callback
Static 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.

param
context Context for the PopupMenu.
param
anchor Anchor view for this popup. The popup will appear below the anchor if there is room, or above it if there is not.

        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.

param
context Context the popup menu is running in, through which it can access the current theme, resources, etc.
param
anchor Anchor view for this popup. The popup will appear below the anchor if there is room, or above it if there is not.
param
gravity The {@link Gravity} value for aligning the popup with its anchor.

        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.

param
context Context the popup menu is running in, through which it can access the current theme, resources, etc.
param
anchor Anchor view for this popup. The popup will appear below the anchor if there is room, or above it if there is not.
param
gravity The {@link Gravity} value for aligning the popup with its anchor.
param
popupStyleAttr An attribute in the current theme that contains a reference to a style resource that supplies default values for the popup window. Can be 0 to not look for defaults.
param
popupStyleRes A resource identifier of a style resource that supplies default values for the popup window, used only if popupStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.

        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 voiddismiss()
Dismiss the menu popup.

see
#show()

        mPopup.dismiss();
    
public View.OnTouchListenergetDragToOpenListener()
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());

return
a touch listener that controls drag-to-open behavior

        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.MenugetMenu()

return
the {@link Menu} associated with this popup. Populate the returned Menu with items before calling {@link #show()}.
see
#show()
see
#getMenuInflater()

        return mMenu;
    
public android.view.MenuInflatergetMenuInflater()

return
a {@link MenuInflater} that can be used to inflate menu items from XML into the menu returned by {@link #getMenu()}.
see
#getMenu()

        return new SupportMenuInflater(mContext);
    
public voidinflate(int menuRes)
Inflate a menu resource into this PopupMenu. This is equivalent to calling popupMenu.getMenuInflater().inflate(menuRes, popupMenu.getMenu()).

param
menuRes Menu resource to inflate

        getMenuInflater().inflate(menuRes, mMenu);
    
public voidonCloseMenu(android.support.v7.internal.view.menu.MenuBuilder menu, boolean allMenusAreClosing)

hide

        if (mDismissListener != null) {
            mDismissListener.onDismiss(this);
        }
    
public voidonCloseSubMenu(android.support.v7.internal.view.menu.SubMenuBuilder menu)

hide

    
public booleanonMenuItemSelected(android.support.v7.internal.view.menu.MenuBuilder menu, android.view.MenuItem item)

hide

        if (mMenuItemClickListener != null) {
            return mMenuItemClickListener.onMenuItemClick(item);
        }
        return false;
    
public voidonMenuModeChange(android.support.v7.internal.view.menu.MenuBuilder menu)

hide

    
public booleanonOpenSubMenu(android.support.v7.internal.view.menu.MenuBuilder subMenu)

hide

        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 voidsetOnDismissListener(android.support.v7.widget.PopupMenu$OnDismissListener listener)
Set a listener that will be notified when this menu is dismissed.

param
listener Listener to notify

        mDismissListener = listener;
    
public voidsetOnMenuItemClickListener(android.support.v7.widget.PopupMenu$OnMenuItemClickListener listener)
Set a listener that will be notified when the user selects an item from the menu.

param
listener Listener to notify

        mMenuItemClickListener = listener;
    
public voidshow()
Show the menu popup anchored to the view specified during construction.

see
#dismiss()

        mPopup.show();