2011-12-14 11 views
5

Mam istniejącą aplikację z przeglądarką na pełnym ekranie, która używa przycisku menu, aby wyświetlić opcje. Ustawiłem Android: targetSdkVersion na 14, aby cała aplikacja wyglądała jak natywna aplikacja ICS.Wyświetlanie przycisku menu na ICS przy zachowaniu android: targetSdkVersion na 14

Problem polega na tym, że przy ustawianiu stylu działania na pełny ekran, nie mam przycisku menu, a jeśli pokażę pasek akcji, aplikacja zajmuje zbyt dużo miejsca na ekranie, aby wyświetlić menu.

Czy jest jakiś sposób na zachowanie zwykłego przycisku menu w trybie pełnoekranowym na karcie ICS?

Odpowiedz

2

Przypuszczam, że nie ma sposobu, aby pokazać tylko niewielką część paska czynności ICS - przynajmniej będzie wyglądać dziwnie. Najlepszym sposobem jest stworzenie gdzieś w aplikacji "przycisku menu". Jeśli chcesz ukryć ten przycisk w przypadku telefonów ze sprzętowym przyciskiem menu, możesz sprawdzić wersję SDK: android.os.Build.VERSION.SDK_INT

2

Jest sposób, jeśli czujesz się komfortowo z hackiness i refleksji. Daniel Lew wspomina o tym w his blog. Zauważa on odpowiednio, że tak naprawdę nie powinno się go używać z kodem produkcyjnym. Twórcy Androida mogą w przyszłości odebrać tę umiejętność.

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); 
    } 
}