2012-01-18 9 views
16

Sto seguendo un libro su Sviluppo Android per iniziare a scrivere la mia prima vera app. Mi sono alzato al punto in cui sto creando un menu di opzioni per una delle mie attività. Il menu appare, ma l'icona corrispondente della voce di menu si rifiuta di visualizzare. ecco il codice per il menu:L'icona del menu delle opzioni Android non verrà visualizzata

ReminderListActivity

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

res/menu/list_menu.xml

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

</menu> 

ho copiato l'icona ic_menu_add.png (32x32px) da una delle mie sottocartelle SDK Android alla mia cartella res/drawable-mdpi e rinominato il file in menu_add.png. Ho aggiornato la cartella all'interno di eclissi in modo che l'icona venga visualizzata e, come puoi vedere, l'ho impostata come icona per la voce di menu nel mio file di layout. Ho provato a eseguire il mio progetto nell'emulatore alcune volte, ma l'icona non viene mai visualizzata. Per la cronaca, sto usando Android 4.0.3 ..

Qualche idea?

+0

Puoi provare a mettere l'icona nella cartella densità di meno? Penso che non abbia niente a che fare con il tuo codice. Potrebbe essere un problema tecnico in Eclipse. – iTurki

+0

Cosa intendi esattamente per cartella senza densità? Ci sono solo le cartelle ldpi, mdpi e hdpi drawable, no? Ho provato a inserire l'icona in tutte le cartelle, ma non è stato risolto. – Jort

+1

aggiungi una cartella e chiamala 'estraibile', quindi inserisci l'icona. Se non ha funzionato, prova a duplicare l'icona su ogni cartella. Non dimenticare di aggiornare il progetto e pulirlo prima di testarlo. – iTurki

risposta

28

Su Android 3.0+, l'approccio preferito per il menu delle opzioni (un menu di spillover nella barra delle azioni) non mostrerà le icone. Se hai android:targetSdkVersion="11" o superiore, le icone non verranno mai visualizzate nei menu su Android 3.0+. Le icone verranno visualizzate se si promuove una voce di menu delle opzioni come pulsante della barra degli strumenti e le icone verranno visualizzate su dispositivi Android 1.x/2.x.

+0

Grazie per la risposta, sospettavo che avesse qualcosa a che fare con le impostazioni di Android. Posso semplicemente trasformare le voci del menu delle opzioni in pulsanti della barra degli strumenti o devo trasformare il mio intero menu delle opzioni in una barra degli strumenti? – Jort

+0

@Jort: In primo luogo, dovresti smettere di preoccuparti delle icone. Puoi usare 'android: showAsAction' per spostare gli elementi del menu delle opzioni nella barra delle azioni come pulsanti della barra degli strumenti. – CommonsWare

+0

Grazie per il chiarimento. Il libro che sto seguendo atm è incentrato sulla scrittura di app per Android 2.2, ecco perché ero così insistente nel cercare di far apparire le mie icone. Non ho ancora usato la barra delle azioni, ma ora capisco come l'interfaccia utente è cambiata nelle versioni più recenti di Android. Grazie ancora per l'utile consiglio :) – Jort

0

Una buona idea è che è stato creato un layout con RelativeLayout e quando l'utente ha selezionato il menu, viene visualizzato il layout.

5

questo è perfettamente funzionante per me in API 23

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context=".MainActivity"> 
<item 
    android:icon="@drawable/ic_menu" 
    android:orderInCategory="100" 
    android:title="Option Menu" 
    app:showAsAction="always"> 
    <menu> 
     <item 
      android:id="@+id/action_myorder" 
      android:icon="@drawable/ic_order" 
      android:title="My Order" /> 
     <item 
      android:id="@+id/action_myaccount" 
      android:icon="@drawable/ic_account" 
      android:title="My Account" /> 
     <item 
      android:id="@+id/action_share" 
      android:icon="@drawable/ic_share" 
      android:title="Share" /> 
     <item 
      android:id="@+id/action_term_condition" 
      android:icon="@drawable/ic_terms" 
      android:title="Term and Conditions" /> 
     <item 
      android:id="@+id/action_logout" 
      android:icon="@drawable/ic_logout" 
      android:title="Logout" /> 
    </menu> 
</item> 

+0

fantastico! voglio solo sapere che cosa è l'uso di Android: orderInCategory = "100" – Abhijit

+0

se il valore per la categoria è 0 allora il menu di overflow che appare sul frammento è grattuggiato quindi 0 sotto il frammento. –

Problemi correlati