2012-06-30 11 views
6

Estoy tratando de cambiar mi aplicación a una apariencia ICS con ABS. Obtener el ActionBar en sí mismo fue agradable y sencillo, sin embargo, agregar elementos del menú no ha sido así.Elementos de ActionBarSherlock que no aparecen en el desbordamiento

Mi código es el siguiente:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

se están utilizando todas las importaciones correspondientes.

Y mi menu.xml es el siguiente:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/backup" android:title="@string/backupLabel"/> 
    <item android:id="@+id/restore" android:title="@string/restoreLabel"/> 
</menu> 

Los espectáculos actionbar, pero el menú se comporta como un menú 2.1 - solamente la activación del botón de menú sin desbordamiento disponible. Esto también es cierto en un emulador de ICS, donde tengo que usar el botón de menú para activar el menú.

Si agrego android: showAsAction = "ifRoom", los elementos aparecen como elementos de acción, pero no en el desbordamiento, que es donde me gustaría que siempre estuvieran.

¿Tiene todo eso sentido?

¿Qué me estoy perdiendo?

+0

http://stackoverflow.com/questions/9286822/how-to-force-use-of-overflow-menu-on -devices-with-menu-button –

+0

http://stackoverflow.com/questions/8758263/how-to-force-overflow-menu-on-android-actionbar-compat –

+0

Paul solucionó su problema con el enlace proporcionado? – Warpzit

Respuesta

0

Probablemente esté utilizando un emulador que tenga un teclado de hardware habilitado, y no software. Para ver acciones en el menú de desbordamiento, use un emulador con controles de agua blanda. Las capturas de pantalla muestran dos formas de hacerlo.

  • Editar una AVD existentes

Edit an existing AVD.

  • Clone un perfil de dispositivo existente

Clone an existing device profile.

1

ForceOverflow ha sido eliminado en ABS 4.1.2 con el avistamiento del creador que nunca debería haber ingresado (ver las notas del registro de cambios). Estoy bastante seguro de que estás viendo el comportamiento esperado; cualquier dispositivo con un botón de menú que ejecute ICS + (por ejemplo, mi Nexus S) no muestra el menú de desbordamiento, ya que hay una tecla de hardware dedicada: el botón "menú".

Utilice la configuración del emulador para quitar el botón de menú del dispositivo emulado y Android sabrá agregar el menú de desbordamiento.

4

sólo tiene que utilizar este menú código Boath están en la Barra de acciones:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/backup" 
     android:showAsAction="ifRoom" 
     android:title="backupLabel"/> 
    <item 
     android:id="@+id/restore" 
     android:showAsAction="ifRoom" 
     android:title="restoreLabel"/> 
</menu> 

su aspecto como:

enter image description here

Porque si es así el uso

android:showAsAction="ifRoom" : Only place this item in the Action Bar if there is room for it. 

y

android:showAsAction="Never" : Never place this item in the Action Bar. 

si se utiliza como:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

     <item 
      android:id="@+id/backup" 
      android:showAsAction="ifRoom" 
      android:title="backupLabel"/> 
     <item 
      android:id="@+id/restore" 
      android:title="restoreLabel"/> 
    </menu> 

entonces su mirada: uno está en la Barra de acciones & segundo es abierta cuando se pulsa el botón de menú.

enter image description here

Nota: Su funcionamiento muy bien en < 3.0 OS Android por lo que no se preocupe. Pero si tiene varias opciones de menú (más de 3) con android:showAsAction="ifRoom", entonces mostrará según el tamaño de pantalla del dispositivo.

en Protrait:

enter image description here

en paisaje:

enter image description here


después de hacer todo lo anteriormente ll saggest le permite utilizar a continuación en forma < 3.0 OS Android:

enter image description here

código:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/file" 
     android:showAsAction="ifRoom" 
     android:title="file"> 

     <!-- "file" submenu --> 
     <menu> 
      <item 
       android:id="@+id/create_new" 
       android:title="create_new"/> 
      <item 
       android:id="@+id/open" 
       android:title="open"/> 
     </menu> 
    </item> 

</menu> 
Cuestiones relacionadas