Domanda

Mentre posso impostare le icone della barra di azione nel mio codice Java, non riesco a farli visualizzare quando li metti nel mio XML.Preferirei metterli in XML.

Di seguito sono riportati i miei due tentativi di raggiungere la stessa cosa: tre icone sulla barra di azione.Potresti spiegare perché il secondo approccio fallisce?

(Nota, nella mia versione finale, ho intenzione di mantenere due dei tre nel menu Overflow, sto solo cercando di mostrare tutti e tre durante il test.)

Questo XML:

<?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item   android:id="@+id/menuConfig"
                android:title="Configuration"
        />
        <item   android:id="@+id/menuAbout"
                android:title="About" 
        />
        <item   android:id="@+id/menuHelp"
                android:title="Help" 
        />
    </menu>
.

E questo Java:

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.optionsmenu, menu);

    MenuItem settings = menu.findItem(R.id.menuConfig);     
    settings.setIcon(R.drawable.settings);
    settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    MenuItem about = menu.findItem(R.id.menuAbout);     
    about.setIcon(R.drawable.about);
    about.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    MenuItem help = menu.findItem(R.id.menuHelp);       
    help.setIcon(R.drawable.help);
    help.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    return true;
}   
.

Produci questo display:

Inserisci Descrizione dell'immagine qui

considerando che, questo XML:

<?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item   android:id="@+id/menuConfig"
            android:title="Configuration"
            android:icon="@drawable/settings"
            showAsAction="ifRoom"
    />
    <item   android:id="@+id/menuAbout"
            android:title="About" 
            android:icon="@drawable/about"
            showAsAction="ifRoom"
    />
    <item   android:id="@+id/menuHelp"
            android:title="Help" 
            android:icon="@drawable/help"
            showAsAction="ifRoom"
    />
</menu>
.

E questo Java:

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.optionsmenu, menu);

    return true;
}   
.

Produci questo display:

Inserire l'immagine Descrizione qui

È stato utile?

Soluzione

va bene.

Il menu di overflow mostra solo il testo.Le icone vengono utilizzate solo quando l'articolo è mostrato nella barra delle azioni come azione.

Se vuoi vedere le icone nella barra d'azione devi usare

android:showAsAction="ifRoom"
.

invece di

showAsAction="ifRoom"
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top