studio sgoliver personalizar bar actionbar android android-actionbar

sgoliver - personalizar toolbar android studio



Cómo forzar el icono de desbordamiento de la barra de acción para mostrar (2)

¡Felicidades! ¡Ganaste!

A partir de Android 4.4, la ... capacidad en la barra de acción estará allí, independientemente de si el dispositivo tiene un botón de menú físico o no. El Documento de Definición de Compatibilidad actual de Google ahora sale un poco más en contra de tener un botón de MENÚ dedicado.

El truco que los desarrolladores han usado en el pasado para obtener este comportamiento es:

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) { // presumably, not relevant }

Eso no debería ser necesario en Android 4.4+, aunque con el manejador de excepciones en su lugar, no esperaría ningún problema en particular si lo ejecuta y, algún día, se deshace de sHasPermanentMenuKey directamente.

Personalmente, todavía no cambiaría las cosas en Android 4.3 y versiones posteriores, ya que sospecho que se trata de una situación en la que se pueden cambiar las quejas sobre no tener menú con quejas sobre tener versiones duplicadas del mismo menú. Una vez dicho esto, dado que ahora este es el comportamiento respaldado oficialmente en el futuro, no tengo problemas con los desarrolladores que buscan la coherencia en los dispositivos más antiguos.

Un consejo de sombrero para el comentarista sobre el problema que archivé con respecto a esto, señalando el cambio.

Me gustaría forzar que el icono de desbordamiento siempre se muestre en la barra de acciones (suponiendo que haya elementos de desbordamiento). En modelos con un botón de menú, a veces el icono de desbordamiento no aparece y los usuarios deben tocar el botón de menú de dispositivos para obtener el resto de los elementos del menú de acción. Los usuarios siguen quejándose de esto.

Tenga en cuenta que para el menú contextual, el icono de desbordamiento siempre se muestra, independientemente de si el dispositivo tiene incorporado un botón de menú o no.

Me doy cuenta de que forzar que el ícono de desbordamiento aparezca en la barra de acción duplicaría la funcionalidad del "físico". Podría considerar que eso viola las pautas de diseño de los androides. En mi opinión, sin embargo, los usuarios ganan. Dicen que es confuso y creo que tienen razón.


Esto podría ser otro trabajo alternativo, que realmente me ayudó. Mantenga uno dibujable con tres puntos y bríndelo como un elemento del menú.

<?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/saveDetails" app:showAsAction="always" android:title="@string/save"/> <item android:id="@+id/menu_overflow" android:icon="@drawable/dts" android:orderInCategory="11111" app:showAsAction="always"> <menu> <item android:id="@+id/contacts" app:showAsAction="never" android:title="Contacts"/> <item android:id="@+id/service_Tasks" app:showAsAction="never" android:title="Service Tasks"/> <item android:id="@+id/charge_summary" app:showAsAction="never" android:title="Charge Summary"/> <item android:id="@+id/capture_signature" app:showAsAction="never" android:title="Capture Signature"/> </menu> </item> </menu>