5

Im App compat Thema in meiner App, und in der Aktionsleiste habe ich ein Menü mit einem Element, das als ein Symbol angezeigt werden sollte - aber ich bekomme Menü-Taste wie dieseAktionsleiste zeigt Dropdown-Menü, wenn nur ein Element im Menü

enter image description here

hier ist mein Code des 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> 

Und hier ist der Code, wie ich initialisieren die ActionBar:

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

und das Menü zeigen:

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

Also kann mir jemand helfen den Menüpunkt, wie es sollte angezeigt werden?

Dank

+0

Sind Sie sicher, dass Symbol initialisatio n ist richtig? – Keshav1234

Antwort

8

Support-Bibliothek verwenden, android:showAsAction wird seine Aufgabe nicht. Also ist deine Menüdeklaration nicht korrekt. Von 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> 

Wenn es für das Element in der Aktionsleiste nicht genügend Platz ist, wird es in dem Aktionsüberlauf auftreten.

Verwendung von XML-Attribute von der Support-Bibliothek

Beachten Sie, dass die showAsAction oben Attribut einen benutzerdefinierten Namespace in dem Tag definiert verwendet. Dies ist erforderlich, wenn Sie XML-Attribute verwenden, die von der Support-Bibliothek definiert wurden, da diese Attribute auf älteren Geräten nicht im Android-Framework vorhanden sind. Daher müssen Sie Ihren eigenen Namespace als Präfix für alle Attribute verwenden, die von der Support-Bibliothek definiert werden.


So sollte Ihr Menü xml

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

Danke für die richtige Antwort und gute Erklärung! –

+0

@DarkoPetkovski Ihre herzlichsten :) –

+2

wollte nur hinzufügen, dass dies nur gültig ist, wenn Sie die Support-Bibliothek verwenden. Wenn Sie die Standard-'' 'ActionBar''' verwenden, funktioniert der ursprüngliche Code, der in der Frage gepostet wird. –

0

Sie

app:showAsAction="always" 

eher verwenden müssen als

android:showAsAction="always"