A menu is a temporary piece of paper emitted from a button, an action, a pointer, or another control that contains at least two menu items.
Each menu item is a discrete option or action that can affect the app, the view, or selected elements within a view.
Menus should not be used as a primary method for navigation within an app.
The label of an emitting button or control concisely and accurately reflects the menu items contained within the menu. Menu bars typically use single words as labels, like “file”, “format”, “edit”, and “view”, while other contexts may have more verbose labels.
Menus display a consistent set of menu items, each of which may be enabled or disabled based on the current state of the application.
Contextual menus dynamically change their available and enabled menu items based on the current state of the application.
Generally, remove menu items that are irrelevant to the current context, and disable menu items which are relevant but need certain conditions to be met (for example, Copy becomes enabled when text is selected).
Certain application states may result in a contextual menu containing only a single menu item. For example, when highlighting text on a web page, Android reveals only Copy, since users cannot cut or paste text.
Reposition menus vertically and horizontally based on their proximity to screen edges.
If the height of a menu prevents all menu items from being displayed, the menu can scroll internally. One example is when viewing a menu on a phone in landscape orientation.
A menu can also cascade.
These animations show scrolling and cascading menus in action.