Mostrar menú emergente en el elemento `ActionBar` haga clic en
Tengo una ActionBar
acción con un elemento de acción en él. Después de hacer clic en el elemento de acción, quiero mostrar un menú emergente. Implementé este método, pero quiero anclarlo al elemento de acción o al ActionBar
, no a ninguna vista del diseño. ¿Cómo obtener algún tipo de vista para anclarlo desde MenuItem
?
public boolean onOptionsItemSelected(MenuItem item) { PopupMenu popupMenu = new PopupMenu(this, ??????); // What view goes here? popupMenu.inflate(R.menu.counters_overflow); popupMenu.show(); // ... return true; }
- Cambiar el color del texto de un solo elemento en un PopupMenu
- Divisor de menú emergente para el tema de compatibilidad de aplicaciones
- Posición de popupmenu de Android
- ¿Cómo mostrar el menú emergente exacto debajo de la barra de acción?
- Problema de menú emergente en Android ListView
- PopupMenu PopupWindow $ PopupViewContainer fuga
- Color de texto del menú emergente de Android (AppCompat)
- Cómo crear un PopupMenu personalizado en Android
- Implementar menú emergente con margen
- Cambiar el estilo del menú emergente - no funciona
- Android cómo mostrar PopupMenu en webview como GMail
- El elemento compatible con Android PopupMenu no se comprueba
- Se ha intentado finalizar un evento de entrada pero el receptor de eventos de entrada ya se ha eliminado
Así que finalmente encontré solución. Cuando se desea anclar popupmenu a ActionItem en ActionBar es necesario encontrar la vista que hace ActionItem. Vista de búsqueda simple con findViewById () donde id es igual que id de su elemento de menú en xml.
VISUALIZACIÓN DE POPUP:
public boolean onOptionsItemSelected(MenuItem item) { // ... View menuItemView = findViewById(R.id.menu_overflow); // SAME ID AS MENU ID PopupMenu popupMenu = new PopupMenu(this, menuItemView); popupMenu.inflate(R.menu.counters_overflow); // ... popupMenu.show(); // ... return true; }
MENÚ:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > .... <item android:id="@+id/menu_overflow" android:icon="@drawable/ic_overflow" android:showAsAction="ifRoom" android:title="@string/menu_overflow"/> .... </menu>
Si el elemento de menú no está visible (está en desbordamiento) no funciona. FindViewById devuelve null por lo que tiene que comprobar esta situación y anclar a otra vista.
public boolean onOptionsItemSelected(MenuItem item) { final View addView = getLayoutInflater().inflate(R.layout.add, null); new AlertDialog.Builder(this).setTitle("Add a Word").setView(addView) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { addWord((TextView) addView.findViewById(R.id.title)); } }).setNegativeButton("Cancel", null).show(); return (super.onOptionsItemSelected(item)); }
Obtener el formulario de fuente completa aquí ..
http://vimaltuts.com/android-tutorial-for-beginners/android-action-bar-tab-menu-example
- Abierta: EBUSY (dispositivo o recurso ocupado)
- La inserción de miles de entradas de contacto mediante applyBatch es lenta