5

Im utilizza l'app compat theme nella mia app e nella barra delle azioni ho un menu con un elemento che dovrebbe essere visualizzato come un'icona - ma invece il pulsante del menu mi piaceLa barra delle azioni mostra il menu a discesa quando solo un elemento nel menu

enter image description here

Ecco il mio codice di xml menù:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/action_play" 
     android:icon="@drawable/play" 
     android:orderInCategory="100" 
     android:showAsAction="always"/> 

</menu> 

Ed ecco il codice su come mi inizializzare l'ActionBar:

getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setTitle(title); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(false); 

e mostrare il menu:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.names, menu); 
     playStop = menu.findItem(R.id.action_play); 
     return true; 
    } 

Così qualcuno può aiutarmi per visualizzare la voce di menu come dovrebbe?

Grazie

+0

Sei sicuro icona initialisatio n è corretto? – Keshav1234

risposta

8

Utilizzando libreria di supporto, android:showAsAction non farà il suo compito. Quindi la tua dichiarazione del menu non è corretta. Da documentation

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 
    <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      yourapp:showAsAction="ifRoom" /> 
    ... 
</menu> 

Se non c'è abbastanza spazio per la voce nella barra delle azioni, essa apparirà nel troppo pieno di azione.

Utilizzando attributi XML dalla libreria di supporto

Si noti che l'attributo showAsAction precedente utilizza uno spazio dei nomi personalizzato definito nel tag. Ciò è necessario quando si utilizzano gli attributi XML definiti dalla libreria di supporto, poiché questi attributi non sono presenti nel framework Android su dispositivi precedenti. Quindi è necessario utilizzare il proprio spazio dei nomi come prefisso per tutti gli attributi definiti dalla libreria di supporto .


Così il vostro XML menù dovrebbe essere

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/action_play" 
     android:icon="@drawable/play" 
     android:orderInCategory="100" 
     app:showAsAction="always"/> 

</menu> 
+0

Grazie per la risposta corretta e una grande spiegazione! –

+0

@DarkoPetkovski I più graditi :) –

+2

Volevo solo aggiungere che questo è valido solo quando si utilizza la libreria di supporto. Se stai usando l'opzione '' 'ActionBar''' il codice originale pubblicato nella domanda funzionerà. –

0

È necessario utilizzare

app:showAsAction="always" 

piuttosto che

android:showAsAction="always" 
Problemi correlati