2013-07-16 8 views
5

Sto provando a creare l'opzione di menu nella mia applicazione di test.Come mostrare il menu di opzioni in Android 4.2

Sono in grado di visualizzare il menu quando imposto il tema in manifest su predefinito (il menu viene visualizzato in alto). Se imposto il tema in manifest a NoTitleBar. Non riesco a vedere l'opzione del menu?

Voglio ottenere il menu quando imposto il tema "NoTitleBar" in manifest.

Come ripararlo?

Qui di seguito sono le cose che ho usato nella mia applicazione di test:

con manifesto:

<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> 

E

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> 

file di 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; 
} 

E 'possibile ottenere qualcosa di simile:

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

Come faccio menù di presentarsi verso il basso?

Grazie!

+0

Sui dispositivi con un pulsante di menu (come il Galaxy S2) verrà visualizzato quando si preme il pulsante menu. Su altri dispositivi è nella barra del titolo. Perché stai rimuovendo la barra del titolo se hai un menu? – nedaRM

+0

Ho visto un paio di menu in basso ... Come l'immagine mostrata nella mia domanda. Com'è fatto? – TheDevMan

+0

Anche l'app Facebook mostra il menu in basso per 4.2. – TheDevMan

risposta

0

L'uso del tema notitlebar rimuove la barra delle azioni in cui si trova il pulsante del menu. Probabilmente dovresti creare un tema personalizzato per avere il tuo menu. Se non stai facendo nulla, puoi sempre utilizzare questo attributo: android:showAsAction="Never" in modo che gli utenti con telefoni dotati di un pulsante di menu possano visualizzare il menu con il loro pulsante.

+0

Dove posso mostrare questo: android: showAsAction = "Never"? In Manifest o Menu.xml? – TheDevMan

+0

Nel menu.xml, nel tag . –

+0

Ho visto un paio di menu in basso ... Come l'immagine mostrata nella mia domanda. Com'è fatto? – TheDevMan

2

Aggiungere il codice seguente di seguito 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() non è stato trovato come metodo. Questo è stato introdotto con l'API 22. –

+0

@AndrewS Per me la documentazione nel mio IDE dice che era in 14. La soluzione alternativa è di aggiungere prima un controllo di versione. – Nulano

0

Aggiungere nel manifesto Android Android: targetSdkVersion = "10"

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

Se non si desidera una barra delle operazioni nella vostra app, allora si può solo impostare un pulsante con questo gestore:

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

Ora myButton funziona come il tasto menu. Questo è un modo semplice per migrare un'app a schermo intero a 4.x, anche se a lungo termine si dovrebbe cercare una soluzione più elegante.