¿Cómo usar ActionMenuView?

Dado que SplitActionBar ya no es compatible en Android 5.0, estoy intentando usar ActionMenuView para lograr un efecto SplitActionBar. Pero no pude encontrar mucha información sobre cómo usar ActionMenuView.

Sé que puedo agregar un ActionMenuView en el archivo de diseño, pero no sé cómo agregar elementos de menú. No parece que podría inflarlo como hago con SplitActionBar.

¿Podría dar algún código de ejemplo sobre cómo usar ActonMenuView? ¡Gracias!

Obtener una vista de acción para mostrar el ancho de iconos de toda la pantalla es una tarea. Aquí hay un ejemplo para hacer lo que quieras. Asegúrese de que su elemento XML de ActionMenuView es wrap_content para la altura y el ancho, luego gravedad a la derecha. Rodéalo en un LinearLayout que toma el ancho entero y proporciona el color de fondo.

Utilice este código para inicializar ActionMenuView (obviamente tendrá que cambiar las devoluciones de los botones)

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); 

Por lo que vale la pena, tuve que leer el código fuente de la biblioteca de soporte durante 8 horas para que esto funcione. La documentación es basura.

Parece que la API ha cambiado mientras tanto. Actualmente, el código siguiente funciona:

  ActionMenuView actions = new ActionMenuView(activity); MenuBuilder menuBuilder = (MenuBuilder) actions.getMenu(); menuBuilder.setCallback(new MenuBuilder.Callback() { @Override public boolean onMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem) { return onOptionsItemSelected(menuItem); } @Override public void onMenuModeChange(MenuBuilder menuBuilder) { } }); inflater.inflate(R.menu.my_menu, menuBuilder); 

Si está utilizando la biblioteca appCompat v7, asegúrese de que su actividad se extienda desde ActionBarActivity y de que utilice la versión de soporte de ActionMenuView .

Del mismo modo, si no está utilizando la biblioteca de soporte, asegúrese de usar ActionMenuView fuera de la biblioteca de soporte.

A partir de ahí, puede obtener el ActionMenuView de su diseño y llenar su menú utilizando el siguiente método:

getMenuInflater().inflate(R.menu.your_menu_here, actionMenuView.getMenu())

Si no estás en una actividad donde getMenuInflater() es accesible, crea tu propio MenuInflater o MenuInflater .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.