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。

在使用appCompat时,Android Studio不让我使用android:showAsAction =“ifRoom”。

应用程序: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的操作栏,则需要使用支持库中的app 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"到XML中的菜单元素,并使用以下格式的showAsActionapp:showAsAction="ifRoom"

如果可能,这将在操作栏中显示图标。