Реализация трех действий внутри одного элемента меню на Android

Я хочу иметь аналогичные функциональные возможности меню, как в браузере Chrome для мобильных устройств, как на картинке. Я хочу иметь назад, вперед, обновлять пункты меню в одной строке. Как я могу реализовать аналогичный пункт меню? Есть ли какая-либо ссылка или есть какие-либо взломы, чтобы принести эту функциональность?

Введите описание изображения здесь

Мое приложение предназначено только для планшетов. Вот мой пункт меню Action bar:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/favorite" android:showAsAction="always" android:title="Happy"/> <item android:id="@+id/share_button" android:icon="@drawable/share" android:showAsAction="always" android:title="Share"/> <item android:id="@+id/hola_button" android:showAsAction="always" android:title="Hola"/> <item android:icon="@drawable/more_actions" android:showAsAction="always"> <menu> <item android:id="@+id/back_button" android:icon="@drawable/back" android:title="back"/> <item android:id="@+id/forward_button" android:icon="@drawable/forward" android:title="forward"/> <item android:id="@+id/refresh_button" android:icon="@drawable/refresh" android:title="refresh"/> </menu> </item> </menu> 

Это похоже на настраиваемый диалог с списком и пользовательский listheader

ИЛИ

Список ниже простого макета с тремя кнопками сверху в диалоговом окне.

Вы можете показать то же самое в элементе меню панели действий.

 @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getSupportMenuInflater().inflate(R.menu.menu_items, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.show_dlg: // Show your custom dialog break; } return super.onOptionsItemSelected(item); } 

Также этот учебник поможет в качестве ссылки для раздувания пользовательских меню http://www.codeproject.com/Articles/173121/Android-Menus-My-Way

РЕДАКТИРОВАТЬ:

ScreenShot overflowmenu

Эти примеры являются OverflowMenu (поскольку ABS отбросила тему переполнения). Вы можете раздувать любые макеты. Этот класс распространяется из PopUpWindow и не использует типичные onCreateOptions. Он использует ABS-CustomView и PopUpWindow для создания меню.

Из справки android: всплывающее окно, которое может использоваться для отображения произвольного вида. Всплывающее окно представляет собой плавающий контейнер, который появляется поверх текущей активности.

Макет похож на ваш запрошенный макет. Это представление привязано к ActionBar, но вы можете отображать его в любом месте. Всплывающее окно поддерживает множество функций отображения из коробки.

Настраиваемый OverflowMenu

 public class OverflowMenu extends PopupWindow { private View mContentView; public OverflowMenu(Context context, int resourceId) { super(context); mContentView = LayoutInflater.from(context).inflate(resourceId, null); setContentView(mContentView); setHeight(WindowManager.LayoutParams.WRAP_CONTENT); setWidth(WindowManager.LayoutParams.WRAP_CONTENT); // Handle touchevents setOutsideTouchable(true); setFocusable(true); setBackgroundDrawable(new BitmapDrawable()); } /** * Attach the OverflowMenu View to the ActionBar's Right corner * @param actionBarView */ public void show(View actionBarView) { int x = actionBarView.getMeasuredWidth() - mContentView.getMeasuredWidth(); showAsDropDown(actionBarView, x, 0); } /** * Return mContentView, * used for mContentView.findViewById(); * @return */ public View getView(){ return mContentView; } } 

Основная деятельность

 public class MainActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mai n); final ActionBar actionBar = getSupportActionBar(); actionBar.setCustomView(R.layout.actionbar); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); final OverflowMenu menu = new OverflowMenu(this,R.layout.menu_overflow); final ImageButton overflowBtn = (ImageButton) actionBar.getCustomView().findViewById(R.id.actionbar_overflow); overflowBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { menu.show(actionBar.getCustomView()); } }); } } 

Вы можете добавить пункт меню на страницу примерно так:

 OptionCommand command = new OptionCommand(); command.setActionView(view); command.setIcon(canvas.getContext().getResources().getDrawable(android.R.drawable.ic_menu_search)); command.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); canvas.getActivity().getOptionCommands().add(command);