2013-02-21 15 views
13

Come mostrare l'icona con il menu di opzioni. Ho provato il seguente codice ma il mio menu di opzioni è senza icona di immagine. Sto usando Android versione 4.0 per lo sviluppo di app.menu di opzioni android con l'icona

codice Java:

public boolean onCreateOptionsMenu(Menu menu) { 
      super.onCreateOptionsMenu(menu); 
      menu.add("Add Contacts").setIcon(
        R.drawable.ic_launcher); 

      return true; 
     } 

seguito è lo schermo del mio app girato

enter image description here

ho bisogno di immagini da visualizzare sulla parte superiore della voce "Aggiungi contatti".

+0

E 'una buona domanda. Peccato che non abbia una risposta. Nessuno di questi metodi funziona. –

risposta

3

È possibile creare un menu personalizzato come questo:

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

E poi gonfiare

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.my_menu, menu); 
    return true; 
} 

Maggiori informazioni su questo qui: http://developer.android.com/guide/topics/ui/menus.html#options-menu

+1

ho provato questo, ma l'immagine non sta arrivando. – sonia

+0

http://stackoverflow.com/questions/8306943/android-menu-icons-are-not-displaying-when-the-api-level-is-above-10 – nedaRM

3

è possibile impostare direttamente questo in XML file.

<item android:id="@+id/add_contacts" 
    android:icon="@android:drawable/plus_icon" 
    android:title="Add Contacts"/> 
1

Si può provare Seguendo questo Link.

Controlla questo e dimmi se ha funzionato o no.

Oppure puoi fare qualcosa del genere.
Creare menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:id="@+id/next" 
       android:icon="@drawable/ic_next" 
       android:title="@string/next" /> 
     <item android:id="@+id/previous" 
      android:icon="@drawable/ic_previous" 
      android:title="@string/previous" /> 
     <item android:id="@+id/list" 
      android:icon="@drawable/ic_list" 
      android:title="@string/list" /> 
</menu> 

E ora sarà in grado di impostare l'icona nel menu

Ora in CreateOptionMenu

public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

E per accedere a quel menu.

public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.next: 
      Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.next) + " menu option", 
         Toast.LENGTH_SHORT).show(); 
      return true; 
     … 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 
+2

la stessa icona non viene visualizzata. – sonia

+0

Ohk quindi puoi provare creando file menu.xml e puoi impostare il menu Elementi in quello e anche impostare ICON in quello. –

+0

Verificare che il codice abbia modificato la risposta. Se funziona o no fammelo sapere. –

1

Se si utilizzano alcuni seguente attributo nel file manifesto allora è sarà mostrare la vostra icona ....

<activity android:name=".ui.CategoryActivity" 
     android:label="@string/app_name" 
     **android:theme="@android:style/Theme.NoTitleBar"**></activity> 

E 'un lavoro bene per me ... :) +1 per il mio sforzo ...

** deve essere inserito.

3

Override OnPrepareOptionsMenu e aggiungere l'icona da lì

e se per superiore a 3,0, utilizzare android:showAsAction in XML.

es. android:showAsAction="ifRoom|withText"

0

il problema è Androidmanifest.xml. Rimuovere android:theme="@style/AppTheme" e funzionerà bene

2

Ho provato il codice in due linee e funziona:

public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     menu.add("Add Contacts"); 
     menu.getItem(0).setIcon(R.drawable.ic_launcher); 
     return true; 
} 
Problemi correlati