public class PopupMenu extends Object
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.Modifier and Type | Class and Description |
---|---|
static interface |
PopupMenu.OnDismissListener
Callback interface used to notify the application that the menu has closed.
|
static interface |
PopupMenu.OnMenuItemClickListener
Interface responsible for receiving menu item click events if the items
themselves do not have individual item click listeners.
|
Constructor and Description |
---|
PopupMenu(Context context,
View anchor)
Constructor to create a new popup menu with an anchor view.
|
PopupMenu(Context context,
View anchor,
int gravity)
Constructor to create a new popup menu with an anchor view and alignment
gravity.
|
PopupMenu(Context context,
View anchor,
int gravity,
int popupStyleAttr,
int popupStyleRes)
Constructor a create a new popup menu with a specific style.
|
Modifier and Type | Method and Description |
---|---|
void |
dismiss()
Dismiss the menu popup.
|
View.OnTouchListener |
getDragToOpenListener()
Returns an
View.OnTouchListener that can be added to the anchor view
to implement drag-to-open behavior. |
int |
getGravity() |
Menu |
getMenu()
Returns the
Menu associated with this popup. |
MenuInflater |
getMenuInflater() |
void |
inflate(int menuRes)
Inflate a menu resource into this PopupMenu.
|
void |
setGravity(int gravity)
Sets the gravity used to align the popup window to its anchor view.
|
void |
setOnDismissListener(PopupMenu.OnDismissListener listener)
Sets a listener that will be notified when this menu is dismissed.
|
void |
setOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener listener)
Sets a listener that will be notified when the user selects an item from
the menu.
|
void |
show()
Show the menu popup anchored to the view specified during construction.
|
public PopupMenu(@NonNull Context context, @NonNull View anchor)
context
- Context the popup menu is running in, through which it
can access the current theme, resources, etc.anchor
- Anchor view for this popup. The popup will appear below
the anchor if there is room, or above it if there is not.public PopupMenu(@NonNull Context context, @NonNull View anchor, int gravity)
context
- Context the popup menu is running in, through which it
can access the current theme, resources, etc.anchor
- Anchor view for this popup. The popup will appear below
the anchor if there is room, or above it if there is not.gravity
- The Gravity
value for aligning the popup with its
anchor.public PopupMenu(@NonNull Context context, @NonNull View anchor, int gravity, @AttrRes int popupStyleAttr, @StyleRes int popupStyleRes)
context
- Context the popup menu is running in, through which it
can access the current theme, resources, etc.anchor
- Anchor view for this popup. The popup will appear below
the anchor if there is room, or above it if there is not.gravity
- The Gravity
value for aligning the popup with its
anchor.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.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.public void setGravity(int gravity)
If the popup is showing, calling this method will take effect only the next time the popup is shown.
gravity
- the gravity used to align the popup windowgetGravity()
public int getGravity()
setGravity(int)
@NonNull public View.OnTouchListener getDragToOpenListener()
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());
@NonNull public Menu getMenu()
Menu
associated with this popup. Populate the
returned Menu with items before calling show()
.Menu
associated with this popupshow()
,
getMenuInflater()
@NonNull public MenuInflater getMenuInflater()
MenuInflater
that can be used to inflate menu items
from XML into the menu returned by getMenu()
getMenu()
public void inflate(@MenuRes int menuRes)
popupMenu.getMenuInflater().inflate(menuRes, popupMenu.getMenu())
.menuRes
- Menu resource to inflatepublic void show()
dismiss()
public void dismiss()
show()
public void setOnMenuItemClickListener(@Nullable PopupMenu.OnMenuItemClickListener listener)
listener
- the listener to notifypublic void setOnDismissListener(@Nullable PopupMenu.OnDismissListener listener)
listener
- the listener to notify