FileDocCategorySizeDatePackage
MenuItemCompat.javaAPI DocAndroid 5.1 API15982Thu Mar 12 22:22:56 GMT 2015android.support.v4.view

MenuItemCompat

public class MenuItemCompat extends Object
Helper for accessing features in {@link android.view.MenuItem} introduced after API level 4 in a backwards compatible fashion.

Note: You cannot get an instance of this class. Instead, it provides static methods that correspond to the methods in {@link android.view.MenuItem}, but take a {@link android.view.MenuItem} object as an additional argument.

Fields Summary
private static final String
TAG
public static final int
SHOW_AS_ACTION_NEVER
Never show this item as a button in an Action Bar.
public static final int
SHOW_AS_ACTION_IF_ROOM
Show this item as a button in an Action Bar if the system decides there is room for it.
public static final int
SHOW_AS_ACTION_ALWAYS
Always show this item as a button in an Action Bar. Use sparingly! If too many items are set to always show in the Action Bar it can crowd the Action Bar and degrade the user experience on devices with smaller screens. A good rule of thumb is to have no more than 2 items set to always show at a time.
public static final int
SHOW_AS_ACTION_WITH_TEXT
When this item is in the action bar, always show it with a text label even if it also has an icon specified.
public static final int
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
This item's action view collapses to a normal menu item. When expanded, the action view temporarily takes over a larger segment of its container.
static final MenuVersionImpl
IMPL
Select the correct implementation to use for the current platform.
Constructors Summary
Methods Summary
public static booleancollapseActionView(android.view.MenuItem item)
Collapse the action view associated with this menu item. The menu item must have an action view set, as well as the showAsAction flag {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}. If a listener has been set using {@link #setOnActionExpandListener(MenuItem, android.support.v4.view.MenuItemCompat.OnActionExpandListener)} it will have its {@link android.support.v4.view.MenuItemCompat.OnActionExpandListener#onMenuItemActionCollapse(MenuItem)} method invoked. The listener may return false from this method to prevent collapsing the action view.

return
true if the action view was collapsed, false otherwise.

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).collapseActionView();
        }
        return IMPL.collapseActionView(item);
    
public static booleanexpandActionView(android.view.MenuItem item)
Expand the action view associated with this menu item. The menu item must have an action view set, as well as the showAsAction flag {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}. If a listener has been set using {@link #setOnActionExpandListener(MenuItem, OnActionExpandListener)} it will have its {@link OnActionExpandListener#onMenuItemActionExpand(MenuItem)} method invoked. The listener may return false from this method to prevent expanding the action view.

return
true if the action view was expanded, false otherwise.

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).expandActionView();
        }
        return IMPL.expandActionView(item);
    
public static ActionProvidergetActionProvider(android.view.MenuItem item)
Gets the {@link ActionProvider}.

return
The action provider.
see
ActionProvider
see
#setActionProvider(MenuItem, ActionProvider)

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).getSupportActionProvider();
        }

        // TODO Wrap the framework ActionProvider and return it
        Log.w(TAG, "getActionProvider: item does not implement SupportMenuItem; returning null");
        return null;
    
public static android.view.ViewgetActionView(android.view.MenuItem item)
Returns the currently set action view for this menu item.

param
item the item to query
return
This item's action view

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).getActionView();
        }
        return IMPL.getActionView(item);
    
public static booleanisActionViewExpanded(android.view.MenuItem item)
Returns true if this menu item's action view has been expanded.

return
true if the item's action view is expanded, false otherwise.
see
#expandActionView(MenuItem)
see
#collapseActionView(MenuItem)
see
#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
see
android.support.v4.view.MenuItemCompat.OnActionExpandListener

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).isActionViewExpanded();
        }
        return IMPL.isActionViewExpanded(item);
    
public static android.view.MenuItemsetActionProvider(android.view.MenuItem item, ActionProvider provider)
Sets the {@link ActionProvider} responsible for creating an action view if the item is placed on the action bar. The provider also provides a default action invoked if the item is placed in the overflow menu.

Note: Setting an action provider overrides the action view set via {@link #setActionView(MenuItem, View)}.

param
item item to change
param
provider The action provider.
return
This Item so additional setters can be called.
see
ActionProvider

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).setSupportActionProvider(provider);
        }
        // TODO Wrap the support ActionProvider and assign it
        Log.w(TAG, "setActionProvider: item does not implement SupportMenuItem; ignoring");
        return item;
    
public static android.view.MenuItemsetActionView(android.view.MenuItem item, android.view.View view)
Set an action view for this menu item. An action view will be displayed in place of an automatically generated menu item element in the UI when this item is shown as an action within a parent.

param
item the item to change
param
view View to use for presenting this item to the user.
return
This Item so additional setters can be called.
see
#setShowAsAction(MenuItem, int)

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).setActionView(view);
        }
        return IMPL.setActionView(item, view);
    
public static android.view.MenuItemsetActionView(android.view.MenuItem item, int resId)
Set an action view for this menu item. An action view will be displayed in place of an automatically generated menu item element in the UI when this item is shown as an action within a parent.

Note: Setting an action view overrides the action provider set via {@link #setActionProvider(MenuItem, ActionProvider)}.

param
item the item to change
param
resId Layout resource to use for presenting this item to the user.
return
This Item so additional setters can be called.
see
#setShowAsAction(MenuItem, int)

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).setActionView(resId);
        }
        return IMPL.setActionView(item, resId);
    
public static android.view.MenuItemsetOnActionExpandListener(android.view.MenuItem item, android.support.v4.view.MenuItemCompat$OnActionExpandListener listener)
Set an {@link OnActionExpandListener} on this menu item to be notified when the associated action view is expanded or collapsed. The menu item must be configured to expand or collapse its action view using the flag {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}.

param
listener Listener that will respond to expand/collapse events
return
This menu item instance for call chaining

        if (item instanceof SupportMenuItem) {
            return ((SupportMenuItem) item).setSupportOnActionExpandListener(listener);
        }
        return IMPL.setOnActionExpandListener(item, listener);
    
public static voidsetShowAsAction(android.view.MenuItem item, int actionEnum)
Sets how this item should display in the presence of a compatible Action Bar. If the given item is compatible, this will call the item's supported implementation of {@link MenuItem#setShowAsAction(int)}.

param
item - the item to change
param
actionEnum - How the item should display.

        final int version = android.os.Build.VERSION.SDK_INT;
        if (version >= 14) {
            IMPL = new IcsMenuVersionImpl();
        } else if (version >= 11) {
            IMPL = new HoneycombMenuVersionImpl();
        } else {
            IMPL = new BaseMenuVersionImpl();
        }
    
        if (item instanceof SupportMenuItem) {
            ((SupportMenuItem) item).setShowAsAction(actionEnum);
        } else {
            IMPL.setShowAsAction(item, actionEnum);
        }