setsupportactionbar - android.support.v7 con `ActionBarActivity` no muestra menú
toolbar android example (2)
En la nueva actualización, Google lanzó una nueva biblioteca de soporte API, que admite ActionBar en el nivel 7+ de la API.
Utilicé ActionBarSherlock hasta esta actualización y escribí el código para cargar el menú:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_main, menu);
return true;
}
y el archivo de menú:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item_menu_ok" android:icon="@drawable/ic_action_ok"
android:title="@string/ok" android:showAsAction="always"></item>
<item android:id="@+id/item_menu_cancel" android:icon="@drawable/ic_action_cancel"
android:title="@string/cancel" android:showAsAction="always"></item>
</menu>
Para configurar los botones de menú en la barra de acciones. Este código funcionó perfectamente con ActionBarSherlock. Pero cuando cambié la barra de acciones a la nueva biblioteca de soporte, los botones no se muestran en la barra de acciones. Incluso si están configurados como android:showAsAction="always"
. Y cuando menu.getSize()
el código, la función menu.getSize()
devuelve 2, y eso es correcto, pero no se muestran botones.
¿Por qué los botones no se muestran en la nueva biblioteca de soporte?
Intente presionar el botón MENÚ en su dispositivo o emulador, y vea si aparecen en el desbordamiento.
Si lo hacen, entonces el problema es que su <menu>
XML necesita cambiar. El menú XML que funciona con ActionBarSherlock y la barra de acción nativa API Level 11+ no funcionará con el backport de la barra de acciones de AppCompat.
Su menú XML debería verse así:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto"
>
<item android:id="@+id/item_menu_ok" android:icon="@drawable/ic_action_ok"
android:title="@string/ok" yourapp:showAsAction="always"></item>
<item android:id="@+id/item_menu_cancel" android:icon="@drawable/ic_action_cancel"
android:title="@string/cancel" yourapp:showAsAction="always"></item>
</menu>
Y necesitaría usar el mismo prefijo yourapp
para cualquier otra cosa relacionada con la barra de acciones (por ejemplo, yourapp:actionLayout
).
Puede ver esto cubierto en la documentación de la barra de acciones .
Me gustaría agregar un poco a la respuesta.
Si desea ver tanto el texto como un ícono , use withText
en showAsAction
Lo acabo de probar; cuando usé always
o ifRoom
sin withText
, solo vi un ícono.