2011-12-14 13 views
5

Tengo una aplicación existente con un visor de pantalla completa que usa el botón de menú para mostrar las opciones. Establecí el android: targetSdkVersion en 14 para que todo el tema de la aplicación parezca una aplicación ICS nativa.Mostrando el botón de menú en ICS manteniendo android: targetSdkVersion en 14

El problema es que al configurar el estilo de actividad para que sea de pantalla completa, no tengo el botón de menú, y si muestro la barra de acciones, la aplicación tiene demasiado espacio en la pantalla solo para mostrar un menú.

¿Hay alguna forma de mantener el botón de menú normal mientras está en pantalla completa en ICS?

Respuesta

2

Supongo que no hay forma de mostrar solo una pequeña parte de la barra de acciones de ICS, al menos parecerá extraño. La mejor manera para ti es crear en algún lugar del "botón de menú" de tu aplicación. Si desea ocultar este botón para teléfonos con el botón de menú de hardware, hay una opción para verificar la versión de SDK: android.os.Build.VERSION.SDK_INT

2

Hay una manera, si se siente cómodo con el hackiness y la reflexión. Daniel Lew lo menciona en his blog. Señala, apropiadamente, que esto realmente no debe usarse con el código de producción. Los desarrolladores de Android pueden quitar esta habilidad en el futuro.

public static void addLegacyOverflowButton(Window window) { 
    if (window.peekDecorView() == null) { 
    throw new RuntimeException("Must call addLegacyOverflowButton() after setContentView()"); 
    } 

    try { 
    window.addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null)); 
    } 
    catch (NoSuchFieldException e) { 
    // Ignore since this field won't exist in most versions of Android 
    } 
    catch (IllegalAccessException e) { 
    Log.w(TAG, "Could not access FLAG_NEEDS_MENU_KEY in addLegacyOverflowButton()", e); 
    } 
} 
Cuestiones relacionadas