Пункт меню приложения Android appcompat showAsAction не работает

У меня есть пункт меню, который отображается на android 4.x, но не на 2.x. Вот мой menu.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/menu_filter" android:title="Filter" app:showAsAction="always"/> </menu> 

Это мой стиль действия

 <style name="style1_actionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <item name="android:background">@color/blue_dark</item> <item name="android:textColor">@color/white</item> <item name="actionMenuTextAppearance">@color/white</item> <item name="background">@color/blue_dark</item> </style> 

Есть идеи?

Изменить: удалить двойную кавычку

Может ли это быть фактом, что я показываю только текст, никаких значков? Я как бы застрял здесь.

Solutions Collecting From Web of "Пункт меню приложения Android appcompat showAsAction не работает"

Пожалуйста, спасибо за помощь, но мне удалось это понять. Это не проблема с xml, это была проблема с функцией onCreateOptionsMenu.

Я использовал это

 new MenuInflater(getApplication()).inflate(R.menu.activity_wentry_editor, menu); 

вместо этого

 MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.activity_wentry_editor, menu); 

Не совсем понятно, почему это работает, но это так.

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

См. Документацию. http://developer.android.com/guide/topics/ui/actionbar.html

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

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

В моем случае мне пришлось добавить несколько строк в onCreateOptionsMenu.

Android Studio не позволяла мне использовать android: showAsAction = "ifRoom" при использовании appCompat.

App: showAsAction = «ifRoom» не работал, и я удалил его без проблем.

  @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); for (int i = 0; i < menu.size(); i++) { menu.getItem(i).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } return super.onCreateOptionsMenu(menu); } 

Если вы хотите, чтобы ваше приложение поддерживало панель действий ниже 3.0, вам нужно использовать приложение compact v7 из библиотеки поддержки.

Также проверьте ссылку

Используя меню в действии, которое расширяет AppCompact, необходимо импортировать контекст приложения в XML и использовать его:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- "Mark Favorite", should appear as action button if possible --> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite_black_48dp" android:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings, should always be in the overflow --> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> </menu> 

Что вам нужно сделать в основном: добавьте xmlns:app="http://schemas.android.com/apk/res-auto" в элемент меню в формате yout XML и используйте showAsAction в следующем формате: app:showAsAction="ifRoom" .

Если это возможно, это покажет значок в панели действий.