¿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).

Ver diferencia: Introduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagen

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.

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:

Introduzca aquí la descripción de la imagen

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> 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.