ActionBar中的项目在showAsAction="always"的情况下未显示

13

我是Android编程新手,目前正在尝试让操作栏(Actionbar)工作。我的问题是,尽管我在XML文件中将一个项设为“始终”,但无论我尝试什么,它始终会出现在溢出菜单中。我在这里找到了几个类似的问题,但没有一个解决了问题。

附加信息:ic_action_search图标位于项目的drawable文件夹中。

main_activity_actions.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">

<!-- Search, always displayed -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      app:showAsAction="always" />


<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
      android:title="@string/action_settings"
      app:showAsAction="never" />
</menu>

strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <string name="app_name">My First App</string>
  <string name="edit_message">Enter a message</string>
  <string name="button_send">Send</string>
  <string name="action_settings">Settings</string>
  <string name="action_search">Search</string>
  <string name="title_activity_main">MainActivity</string>
  <string name="title_activity_display_message">My Message</string>
  <string name="hello_world">Hello world!</string>
</resources>

在MainActivity.java中

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}

谢谢你的帮助!

1个回答

33

请使用android:showAsAction代替app:showAsAction。如果您正在使用appcompat_v7后向兼容库,请同时使用android:showAsActionapp:showAsAction(感谢Commonsware)。


10
如果你使用appcompat_v7工具栏后移功能,则需要同时使用android:showAsActionapp:showAsAction - CommonsWare
将其更改为android:showAsAction后,该项仍然在溢出菜单中。 - Axel
我已经花了一天的时间来解决这个问题。感谢你的答案。 - Yogesh Suthar
8
如果你同时拥有它们并且正在使用Android Studio,它会在XML编辑器中显示错误消息(尽管应用程序可以运行并正常工作)。为了摆脱错误指示器,请添加以下内容到layout XML中:tools:ignore="AppCompatResource" - dazed
在我的情况下,我使用了两者,但仍然没有显示出来? - Shailendra Madda
我像这样使用它:<item android:id="@+id/action_mark_as_read" android:icon="@drawable/ic_done_all_black_24dp" android:orderInCategory="1" android:title="标记为已读" app:showAsAction="ifRoom|withText" android:showAsAction="ifRoom|withText" tools:ignore="AppCompatResource" /> - Shailendra Madda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接