2011-12-14 11 views
5

Ho un'app esistente con un visualizzatore a schermo intero che utilizza il pulsante menu per mostrare le opzioni. Ho impostato Android: targetSdkVersion su 14 per avere l'intero tema dell'app come un'app nativa di ICS.Mostrando il pulsante del menu su ICS mantenendo Android: targetSdkVersion per essere 14

Il problema è che quando si imposta lo stile di attività a schermo intero, non ho il pulsante menu, e se mostro l'ActionBar, è necessario troppo spazio sullo schermo per visualizzare un menu.

C'è un modo per mantenere il pulsante del menu normale a schermo intero su ICS?

risposta

2

Suppongo che non ci sia modo di mostrare solo una piccola parte della barra delle azioni di ICS - almeno sembrerà strano. Il modo migliore per te è creare da qualche parte nel tuo "pulsante menu" dell'app. Se si desidera nascondere questo pulsante per i telefoni con il pulsante del menu hardware, è possibile controllare la versione dell'SDK: android.os.Build.VERSION.SDK_INT

2

C'è un modo, se si è a proprio agio con la cattiveria e la riflessione. Daniel Lew lo menziona in his blog. Egli osserva, appropriatamente, che questo non è destinato a essere utilizzato con il codice di produzione. Gli sviluppatori Android possono togliere questa capacità in 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); 
    } 
} 
Problemi correlati