2013-07-16 9 views
5

Próbuję utworzyć opcję menu w mojej aplikacji testowej.Jak wyświetlić menu opcji w systemie Android 4.2

Jestem w stanie zobaczyć menu po ustawieniu motywu w manifeście na domyślne (menu u góry). Jeśli ustawiam ten temat w manifeście na NoTitleBar. Nie widzę opcji menu?

Chcę uzyskać menu po ustawieniu motywu "NoTitleBar" w manifeście.

Jak to naprawić?

Poniżej są rzeczy, które użyłem w mojej aplikacji testowej:

z manifeście:

<uses-sdk 
     android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar" > 
    <activity 
     android:name="com.ssn.menuoptions.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

I

Menu.xml

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

plik Java:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
    { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

Czy to możliwe, aby uzyskać coś takiego:

file:///C:/Users/Koushik/Downloads/SahayaPictures/fHEQ8.png

Jak zrobić menu, aby pokazać się w dół?

Dzięki!

+0

Na urządzeniach z przyciskiem menu (np. Galaxy S2) pojawi się po naciśnięciu przycisku menu. Na innych urządzeniach jest na pasku tytułowym. Dlaczego usuwasz pasek tytułu, jeśli masz menu? – nedaRM

+0

Widziałem kilka menu w dół .. Podobnie jak obraz pokazany w moim pytaniu. Jak to jest zrobione? – TheDevMan

+0

Również aplikacja Facebook wyświetla menu na dole dla wersji 4.2. – TheDevMan

Odpowiedz

0

Korzystanie z motywu paska poniżej powoduje usunięcie paska akcji, w którym znajduje się przycisk menu. Prawdopodobnie musisz utworzyć niestandardowy motyw, aby mieć w nim swoje menu. Jeśli nic nie robisz, zawsze możesz skorzystać z tego atrybutu: android:showAsAction="Never", aby użytkownicy telefonów z przyciskiem menu mogli wyświetlić menu za pomocą przycisku.

+0

Gdzie to pokazać: android: showAsAction = "Never"? W Manifest lub Menu.xml? – TheDevMan

+0

W pliku menu.xml w tagu . –

+0

Widziałem kilka menu w dół .. Podobnie jak obraz pokazany w moim pytaniu. Jak to jest zrobione? – TheDevMan

2

Dodaj następujący kod poniżej Activity.setContentView();

setContentView(R.layout.activity_detail); 
    // set option menu if has no hardware menu key 
    boolean hasMenu = ViewConfiguration.get(this).hasPermanentMenuKey(); 
    if(!hasMenu){ 
     //getWindow().setFlags(0x08000000, 0x08000000); 
     try { 
      getWindow().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("Optionmenus", "Could not access FLAG_NEEDS_MENU_KEY in addLegacyOverflowButton()", e); 
      } 
    } 
+0

hasPermanentMenuKey() nie został znaleziony jako metoda. Zostało to wprowadzone w API 22. –

+0

@AndrewS Dla mnie dokumentacja w moim IDE mówi, że była w 14. Obejście polega na dodaniu najpierw kontroli wersji. – Nulano

0

Dodaj w Android Oczywisty android: targetSdkVersion = „10”

<uses-sdk 
    android:targetSdkVersion="10" /> 
1

Jeśli nie chcesz, aby pasek działań w aplikacji, a następnie można po prostu założyć przycisk z tej obsługi:

myButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View arg0) { openOptionsMenu(); } 
}); 

Teraz myButton działa jak klawisz menu. Jest to łatwy sposób na przeniesienie aplikacji pełnoekranowej do wersji 4.x, choć w dłuższej perspektywie należy szukać bardziej eleganckiego rozwiązania.