studio setsupportactionbar example custom bar appbarlayout android android-actionbar android-menu android-support-library

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.