Artículos de la barra de herramientas de Android como tres puntos
Tengo un menú para mi actividad principal (res / menu / main_menu.xml) y sólo quiero un elemento en la barra de acción y el resto se oculta bajo tres puntos del menú.
El problema es que nunca veo el elemento de tres puntos en mi barra de acción. ¿Por qué no puedo ver el elemento de tres puntos? ¿Cómo obligar a los artículos a estar escondidos bajo él?
- Rellenar popupmenu sin archivo XML en android
- ¿por qué el botón de menú del emulador muestra todas las actividades de mi aplicación?
- ¿Cómo puedo editar las dimensiones de un elemento de menú PopUp en Android?
- Cómo hacer clic en el índice en el menú de opciones con Espresso Android
- Actividad de inicio de Android en la selección del elemento de menú
Nota: Utilizo minSdkVersion = "14" y pruebo en AVD.
- Los elementos del menú se añaden fuera del grupo
- Nueva actividad - Nuevo menú
- EditText: Desactivar el menú emergente de Pegar / Reemplazar en el evento de clic del controlador de selección de texto
- Crear un menú después de un evento de clic largo en una vista de lista
- ActionBar Sherlock Menu Item OnClick
- Cómo crear una instancia de menú mediante programación? Es decir, inflar un menú fuera onCreateOptionsMenu
- Android actionLayout no se muestra con la barra de herramientas
- El menú de opciones de Android no se muestra
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_item_share" android:title="@string/share" android:icon="@android:drawable/ic_menu_share" app:showAsAction="ifRoom" android:actionProviderClass="android.widget.ShareActionProvider" /> <item android:id="@+id/empty" android:title="@string/options" android:orderInCategory="101" app:showAsAction="always" android:icon="@drawable/ic_action_overflow"> <menu> <item android:id="@+id/action_settings" android:icon="@android:drawable/ic_menu_preferences" app:showAsAction="ifRoom" android:title="@string/settings" /> <item android:id="@+id/action_help" android:icon="@android:drawable/ic_menu_help" app:showAsAction="ifRoom" android:title="@string/help" /> </menu> </item> </menu>
Tendrás que agregar los iconos ic_action_overflow
a tus carpetas res/drawable...
una vez que los hayas descargado desde aquí: http://developer.android.com/design/downloads/index.html
Esta solución proporcionada por ban-geoengineering es una muy intresting … 3 icono de punto a veces no se muestra si se utiliza android: showAsAction namespace android: espacio de nombres personalizado como:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/taskNotificationsBtn" app:showAsAction="always" android:icon="@drawable/tasks"/>
Pero la solución proporcionada por la ban-geoengineering me ayuda a solucionar el problema con la dirección de los objetos de ActionBar que invierte para emparejar esto a la disposición árabe. He utilizado la biblioteca de ActionBarRTLizer y el acercamiento estándar con el androide 3dots causa un cierto error cuando los iconos del ítem del menú se cubren a veces (situación muy frustratign), pero esta solución de encargo
<item android:id="@+id/empty" android:title="@string/options" android:orderInCategory="101" android:showAsAction="always" android:icon="@drawable/ic_action_overflow"> <menu> <item android:id="@+id/action_settings" android:icon="@android:drawable/ic_menu_preferences" android:showAsAction="ifRoom" android:title="@string/settings" /> <item android:id="@+id/action_help" android:icon="@android:drawable/ic_menu_help" android:showAsAction="ifRoom" android:title="@string/help" /> </menu> </item>
Resolvió el problema y RTL funciona perfectamente bien! 🙂
Esto también puede ser útil si desea manejar botones de menú de hardware:
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { // do stuff return true; } else { return super.onKeyUp(keyCode, event); } }
Y agregue aquí: mMenuReference.performIdentifierAction (R.id.menu_0, 1);
Para reemplazar el submenú mostrado como menú de desbordamiento dependiendo, por ejemplo, de la actividad actual, podría utilizar esta solución:
public boolean onCreateOptionsMenu(Menu menu) { // Inflate your main_menu into the menu getMenuInflater().inflate(R.menu.main_menu, menu); // Find the menuItem to add your SubMenu MenuItem myMenuItem = menu.findItem(R.id.my_menu_item); // Inflating the sub_menu menu this way, will add its menu items // to the empty SubMenu you created in the xml getMenuInflater().inflate(R.menu.sub_menu, myMenuItem.getSubMenu());
}
¿Por qué no puedo ver el elemento de tres puntos?
Su emulador está emulando un dispositivo que tiene un botón MENU. Si hay un botón MENU en el dispositivo, el botón MENU muestra el desbordamiento.
La solución se puede encontrar aquí https://stackoverflow.com/a/27502405/1808829 , que funcionó perfecto para mí. No hay necesidad de trabajar con el personal xml, se hace sólo mediante programación.
private void getOverflowMenu() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if(menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } }