ActionMenuView actionMenuView = (ActionMenuView) findViewById(R.id.editBar); final Context context = this; MenuBuilder menuBuilder = new MenuBuilder(context); menuBuilder.setCallback(new MenuBuilder.Callback() { @Override public boolean onMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem) { return onOptionsItemSelected(menuItem); } @Override public void onMenuModeChange(MenuBuilder menuBuilder) { } }); // setup a actionMenuPresenter which will use up as much space as it can, even with width=wrap_content ActionMenuPresenter presenter = new ActionMenuPresenter(context); presenter.setReserveOverflow(true); presenter.setWidthLimit(getResources().getDisplayMetrics().widthPixels, true); presenter.setItemLimit(Integer.MAX_VALUE); // open a menu xml into the menubuilder getMenuInflater().inflate(R.menu.editbar, menuBuilder); // runs presenter.initformenu(mMenu) too, setting up presenter's mmenu ref... this must be before setmenuview menuBuilder.addMenuPresenter(presenter, this); // runs menuview.initialize too, so menuview.mmenu = mpresenter.mmenu actionMenuView.setPresenter(presenter); presenter.updateMenuView(true);
PopupMenu menu = new PopupMenu(getContext(), overflowImageView); menu.inflate(R.menu.popup); menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { ... }); MenuPopupHelper menuHelper = new MenuPopupHelper(getContext(), (MenuBuilder) menu.getMenu(), overflowImageView); menuHelper.setForceShowIcon(true); menuHelper.show();
public SubMenu addSubMenu(int group, int id, int categoryOrder, CharSequence title) { final MenuItemImpl item = (MenuItemImpl) addInternal(group, id, categoryOrder, title); final SubMenuBuilder subMenu = new SubMenuBuilder(mContext, this, item); item.setSubMenu(subMenu); return subMenu; }
public void initialize(MenuItemImpl itemData, int menuType) { mItemData = itemData; //UNUSED mMenuType = menuType; setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE); setTitle(itemData.getTitleForItemView(this)); setCheckable(itemData.isCheckable()); setShortcut(itemData.shouldShowShortcut(), itemData.getShortcut()); setIcon(itemData.getIcon()); setEnabled(itemData.isEnabled()); }
public void initialize(MenuItemImpl itemData, int menuType) { mItemData = itemData; setIcon(itemData.getIcon()); setTitle(itemData.getTitleForItemView(this)); // Title only takes effect if there is no icon setId(itemData.getItemId()); setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE); setEnabled(itemData.isEnabled()); }
public boolean onSubMenuSelected(SubMenuBuilder subMenu) { if (!subMenu.hasVisibleItems()) { return true; } new MenuPopupHelper(mContext, subMenu).show(); return true; }
@Override public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { // Only care about the (sub)menu we're presenting. if (menu != mMenu) return; dismiss(); if (mPresenterCallback != null) { mPresenterCallback.onCloseMenu(menu, allMenusAreClosing); } }
@Override public void bindItemView(MenuItemImpl item, MenuView.ItemView itemView) { itemView.initialize(item, 0); final ActionMenuView menuView = (ActionMenuView) mMenuView; ActionMenuItemView actionItemView = (ActionMenuItemView) itemView; actionItemView.setItemInvoker(menuView); }
@Override public MenuView getMenuView(ViewGroup root) { MenuView result = super.getMenuView(root); ((ActionMenuView) result).setPresenter(this); return result; }
@Override public String getActionViewStatesKey() { final int itemId = mItem != null ? mItem.getItemId() : 0; if (itemId == 0) { return null; } return super.getActionViewStatesKey() + ":" + itemId; } }
public boolean performShortcut(int keyCode, KeyEvent event, int flags) { ActionMenuItem item = findItemWithShortcut(keyCode, event); if (item == null) { return false; } return item.invoke(); }
/** * @return Whether this menu item should be showing shortcuts (depends on * whether the menu should show shortcuts and whether this item has * a shortcut defined) */ boolean shouldShowShortcut() { // Show shortcuts if the menu is supposed to show shortcuts AND this item has a shortcut return mMenu.isShortcutsVisible() && (getShortcut() != 0); }
@Override public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { if (menu instanceof SubMenuBuilder) { ((SubMenuBuilder) menu).getRootMenu().close(false); } } }
public MenuItem setVisible(boolean shown) { // Try to set the shown state to the given state. If the shown state was changed // (i.e. the previous state isn't the same as given state), notify the parent menu that // the shown state has changed for this item if (setVisibleInt(shown)) mMenu.onItemVisibleChanged(this); return this; }
@Override protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) { if (p instanceof LayoutParams) { LayoutParams result = new LayoutParams((LayoutParams) p); if (result.gravity <= Gravity.NO_GRAVITY) { result.gravity = Gravity.CENTER_VERTICAL; } return result; } return generateDefaultLayoutParams(); }
public void initialize(MenuItemImpl itemData, int menuType) { mItemData = itemData; //UNUSED mMenuType = menuType; setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE); setTitle(itemData.getTitleForItemView(this)); setCheckable(itemData.isCheckable()); setShortcut(itemData.shouldShowShortcut(), itemData.getShortcut()); setIcon(itemData.getIcon()); setEnabled(itemData.isEnabled()); }
public boolean onSubMenuSelected(SubMenuBuilder subMenu) { if (!subMenu.hasVisibleItems()) { return true; } new MenuPopupHelper(mContext, subMenu).show(); return true; }
public SubMenu addSubMenu(int group, int id, int categoryOrder, CharSequence title) { final MenuItemImpl item = (MenuItemImpl) addInternal(group, id, categoryOrder, title); final SubMenuBuilder subMenu = new SubMenuBuilder(mContext, this, item); item.setSubMenu(subMenu); return subMenu; }
@Override public void bindItemView(MenuItemImpl item, MenuView.ItemView itemView) { itemView.initialize(item, 0); final ActionMenuView menuView = (ActionMenuView) mMenuView; ActionMenuItemView actionItemView = (ActionMenuItemView) itemView; actionItemView.setItemInvoker(menuView); }