5

Я использую тему приложения для приложения в своем приложении, а на панели действий у меня есть меню с одним элементом, который должен отображаться как значок, - но вместо этого я получаю кнопку меню, такую ​​какПанель действий показывает выпадающее меню, когда в меню отображается только один элемент.

enter image description here

Вот мой код XML меню:

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

А вот код того, как я инициализировать ActionBar:

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

и показать меню:

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

Так может кто-то помочь мне, чтобы отобразить пункт меню, как должно?

Благодаря

+0

Вы уверены, что значок initialisatio n является правильным? – Keshav1234

ответ

8

Используя библиотеку поддержки, android:showAsAction не будет выполнять свою задачу. Таким образом, ваше объявление меню неверно. Из 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> 

Если не хватает мест для пункта в панели действий, она появится в переливных действиях.

Использование XML атрибуты из библиотеки поддержки

Обратите внимание, что атрибут выше showAsAction использует пользовательское пространство имен, определенные в теге. Это необходимо при использовании любых атрибутов XML , определенных библиотекой поддержки, поскольку эти атрибуты не существуют в системе Android на старых устройствах. Поэтому вы должны использовать свое собственное пространство имен в качестве префикса для всех атрибутов, определенных библиотекой поддержки .


Так что ваше меню XML должно быть

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

Спасибо за правильный ответ и отличное объяснение! –

+0

@DarkoPetkovski Ваш самый приветствуемый :) –

+2

Просто хотел добавить, что это действительно только при использовании библиотеки поддержки. Если вы используете стандартный '' 'ActionBar'', исходный код, отправленный в вопрос, будет работать. –

0

Вы должны использовать

app:showAsAction="always" 

вместо

android:showAsAction="always"