¿Por qué ActionbarSharelock muestra sólo el icono de desbordamiento incluso hay espacio
Estoy atrapado con la visibilidad del elemento de menú en ABS, incluso hay espacio en la cabecera. La cosa es que tengo la prueba en el tamaño diferente del dispositivo pero en cada caso puedo ver solamente uno y ése es menú del desbordamiento.
Estoy utilizando onPrepareOptionsMenu
para gestionar mi menú de forma dinámica y que está funcionando perfectamente. (Pero no sé puede ser este problema se produce bye onPrepareOptionsMenu
o alguna otra razón).
- Cambiar el color del texto del menú de opciones cuando usamos app: showAsAction = "always"
- Mostrar elemento de menú siempre en la barra de acción de soporte
- Haciendo clic en un elemento de menú en la barra de acción con Espresso al usar onView (withId (...))
- Android: OptionMenu entre Actividad y Fragmentos
- No se puede ocultar el teclado virtual de SearchView iconfiedbydefault (false)
Ver diferencia:
Primer enfoque Tengo crear menú de forma programática y establecer esa visibilidad utilizando setShowAsAction () . En alguna parte he encontrado setShowAsActionflag () también y tengo que tratar también. Pero en ese caso no puedo ver el menú de desbordamiento en la small screen 320*480
. Por lo tanto, ese es mi problema en el enfoque programático.
Aquí está mi código
@Override public boolean onPrepareOptionsMenu(Menu menu) { // TODO Auto-generated method stu // TO Remove older menu otherwise that will apped menu each time. menu.clear(); menu.add(Menu.NONE, MENU_SEARCH, Menu.NONE, "Search").setIcon(R.drawable.ic_search).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); menu.add(Menu.NONE, MENU_SETTING, Menu.NONE, "Settings").setIcon(R.drawable.ic_action_settings) .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); if (is_session_exist == 1) { menu.add(Menu.NONE, MENU_CHANGE_LOGIN, Menu.NONE, "Change Login").setIcon(R.drawable.ic_action_add_person) .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); menu.add(Menu.NONE, MENU_LOGOUT, Menu.NONE, "Logout").setIcon(R.drawable.abs__ic_clear) .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); } else { menu.add(Menu.NONE, MENU_LOGIN, Menu.NONE, "Login").setIcon(R.drawable.ic_action_add_person) .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); } return super.onPrepareOptionsMenu(menu); }
Segundo enfoque Tengo crear menú utilizando la carpeta XML y establecer todas las propiedades en un archivo separado. Ahora estoy flexionando ese menú en onPrepareOptionsMenu
pero en ese caso sólo puedo ver el icono de desbordamiento en cualquier pantalla de densidad incluso he puesto el android:showAsAction="ifRoom|withText"
Aquí está mi código XML.
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/mainMenu" android:icon="@drawable/abs__ic_menu_moreoverflow_holo_dark" android:showAsAction="always"> <menu> <item android:id="@+id/menu_search" android:icon="@drawable/ic_search" android:showAsAction="ifRoom|withText" android:title="Search" android:visible="true"/> <item android:id="@+id/menu_login" android:icon="@drawable/ic_action_add_person" android:showAsAction="ifRoom|withText" android:title="Login" android:visible="true"/> <item android:id="@+id/menu_change_login" android:icon="@drawable/ic_action_add_person" android:showAsAction="ifRoom|withText" android:title="Change Login" android:visible="false"/> <item android:id="@+id/menu_setting" android:icon="@drawable/ic_action_settings" android:showAsAction="ifRoom|withText" android:title="Setting" android:visible="true"/> <item android:id="@+id/menu_logout" android:icon="@drawable/abs__ic_clear" android:showAsAction="ifRoom|withText" android:title="Logout" android:visible="false"/> </menu> </item> </menu>
Estoy cambiando la opción del menú en onPrepareOptionsMenu
usando setVisible(false/true);
Aquí algunos enlaces útiles que he referir ya, pero el problema no es resolver aún.
Establecer android: showAsAction = "ifRoom | withText" mediante programación
Cómo agregar texto a los iconos en ActionBar?
No sé por qué estoy recibiendo este problema. Su ayuda y esfuerzo sin duda lo apreciarán.
Gracias.
- Haga clic en el elemento de menú que se encuentra a veces en el menú de desbordamiento
- Configuración de la descripción del contenido del menú de opciones android Talkback
- Icono de imagen con el elemento de menú Opción de barra de acción
- Cómo ocultar el menú de opciones?
- ¿Cómo crearía un Spinner para su uso como elemento de acción?
- Detección de un clic en el botón de la barra de acción de nuevo - (OnOptionsItemSelected no llamar cuando haga clic en el botón de la barra de acción de vuelta)
Supongo que para los dispositivos con resolución de pantalla de 320 * 480 no obtendrá un icono de desbordamiento, en lugar de hacer clic en el botón de menú del dispositivo puede obtener los elementos de menú de resto como la imagen de abajo:
Usted está teniendo dos menu
(1) anidado
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item.. "> <menu>
Todo debe ser menú único con el elemento de menú de desbordamiento eliminado .. se muestra automáticamente.
Actualización del menú xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_search" android:icon="@drawable/ic_search" android:showAsAction="ifRoom|withText" android:title="Search" android:visible="true"/> <item android:id="@+id/menu_login" android:icon="@drawable/ic_action_add_person" android:showAsAction="ifRoom|withText" android:title="Login" android:visible="true"/> <item android:id="@+id/menu_change_login" android:icon="@drawable/ic_action_add_person" android:showAsAction="ifRoom|withText" android:title="Change Login" android:visible="false"/> <item android:id="@+id/menu_setting" android:icon="@drawable/ic_action_settings" android:showAsAction="ifRoom|withText" android:title="Setting" android:visible="true"/> <item android:id="@+id/menu_logout" android:icon="@drawable/abs__ic_clear" android:showAsAction="ifRoom|withText" android:title="Logout" android:visible="false"/> </menu>