操作按钮没有显示在操作栏上?

16

我正在跟随developer.android.com上的教程,并尝试在操作栏中添加项目。

尽管我已经添加了所有代码,但搜索操作显示为溢出元素而不是操作按钮元素。我在带有软键盘选项的4英寸和7英寸虚拟设备上进行了尝试。

这里是

main_activity_actions.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
    android:icon="@drawable/ic_action_search"
    android:title="@string/action_search"
    android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
    android:title="@string/action_settings"
    android:showAsAction="never" />
</menu>

这里是MainActivity.java文件的onCreateOptionsMenu方法。

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }

输入图像描述

我想学习是什么原因导致了这个问题。


你能提供一个显示溢出内容的屏幕截图吗? - Kumar Bibek
3
这似乎不是那个问题的副本... - adamdport
2个回答

48
这是因为如果您使用支持AppCompat ActionBar库和ActionBarActivity,则应以与在ActioBarSherlock或默认ActionBar中创建xml菜单的标准方式不同的方式创建菜单。尝试使用此代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto">
      <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          app:showAsAction="always"  />
      <item android:id="@+id/action_compose"
          android:icon="@drawable/ic_action_compose"
          android:title="@string/action_compose" 
          app:showAsAction="always"/>
</menu>

4
对于其他遇到同样问题的人,XML定义顶部的'xmlns'命名空间是很重要的。 - MarcF
@Anjum 命名空间声明必须被写入以实现支持库兼容性,该支持库用于旧的API级别。在这里阅读更多信息:Support Library - coder101
@Muthuraja G:你的知识刚刚拯救了我的一天...非常感谢!!! - AndoAiron
对我来说,它只显示了两个图标 =( 我需要更多,即使做了所有这些“技巧” - user2582318
@Muthuraja,我有相同的代码,但操作按钮没有显示在操作栏中? - alex
显示剩余3条评论

8
虽然问题已解决,但让我发布一个带有更多信息的答案,可能对以后任何人都有帮助。
现在,问题是您使用了android:showAsAction="ifRoom"android:showAsAction="never",而如果要使操作按钮始终可见,则可以使用android:showAsAction="always" FYI,android:showAsAction可以采用以下任何值之一:

android:showAsAction = [“ifRoom”|“never”|“withText”|“always”|“collapseActionView”]

enter image description here 您可以阅读有关菜单资源的更多信息。

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