操作按钮未显示在ActionBar中

时间:2014-04-13 05:04:59

标签: java android android-actionbar

我一直试图关注official Android development tutorial几天,但我注意到两个可用的IDE,Eclipse与ADT插件和Android之间存在一些差异工作室。我听到了关于后者的好消息,这是我正在使用的那个,但是当你第一次创建一个新项目时,文件的布局方式似乎有所不同。我大多能够在这里和那里解决问题,所以它就像Eclipse(教程中使用的IDE)一样,但我无法弄清楚为什么我的动作按钮不会出现在ActionBar。 Here's教程供参考。

所以,这就是我的res/menu/main.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      tools:context="com.example.myapplicationn.app.MainActivity" >

<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      app:showAsAction="ifRoom" />

<item android:id="@+id/action_settings"
      android:title="@string/action_settings"
      android:orderInCategory="100"
      app:showAsAction="never" />

</menu>

我所做的只是替换action_settings并直接从教程的示例代码中复制action_search。 AS和教程之间有一个微妙的(可能不是那么微妙的)差异:教程的文件应该是res/menu/main_activity_actions.xml但是它的AS等价似乎是默认文件{{1}所以我跟着那个去了。此外,教程示例仅具有第一个属性(res/menu/main.xml),但AS创建的文件具有其他属性,因此我保持不变。然后,我用这个修改了onCreateOptionsMenu方法:

xmlns:android="http://schemas.android.com/apk/res/android"

原始代码再次使用@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); } ,因此我将其更改为R.menu.main_activity_actions。该项目编译得很好,MainActivity会在几秒钟后显示在我的手机中,但R.menu.main仍然隐藏在动作溢出下(不是它被称为什么?)按钮。难道我做错了什么?任何帮助表示赞赏。英语不是我的第一语言,我的写作风格有点糟糕,很抱歉。

6 个答案:

答案 0 :(得分:3)

我最近遇到了同样的问题。

showAsAction属性位于app命名空间中。在教程中解释了在使用兼容性库时使用它。但是,如果您将API级别定位到足够高的API级别,则不需要。

我能够使用android命名空间,它对我来说很好。所以将app:showAsAction更改为android:showAsAction,它会显示在你想要的位置。

答案 1 :(得分:2)

试试这个menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_action_search"
    android:showAsAction="ifRoom"
    android:title="@string/action_search"/>
<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>

答案 2 :(得分:1)

确保创建菜单的活动继承自ActionBarActivity,这是使用支持库时的基本活动类。

否则,您在app:showAsAction中设置的任何内容都将无效。

我已经摸不着头脑,想知道为什么这对我来说不起作用,不知道为什么他们在你教导的链接中没有提到它。

希望这是你的问题。

答案 3 :(得分:0)

有点迟到了。对于那些仍然有这个问题的人, 尝试删除此行

xmlns:app="http://schemas.android.com/apk/res-auto"

并更改

app:showAsAction="always"

android:showAsAction="always"

重要: 确保您的PNG图像不大于27x27

答案 4 :(得分:0)

在使用Android Studio并遵循官方教程时,我遇到了完全相同的问题。这对我有用,不知道为什么。

1)我使用 ic_launcher 而不是 ic_action_search 来检查搜索图标文件本身是否存在问题。

<item android:id="@+id/action_search"
          android:icon="@drawable/ic_launcher"
          android:title="@string/action_search"
          app:showAsAction="ifRoom" />

现在我可以看到启动器图标可见。

2)然后我再次下载了&#34;动作栏图标包中的图标&#34;并将android:icon改回 ic_action_search

现在可以看到搜索按钮了。

就像我说不确定为什么这样有效。

答案 5 :(得分:0)

我也一直在关注这个教程,你所提到的链接。同样的事情,按钮只是没有在工具栏中显示,尝试了不同的解决方案。最后,来自Udacity的一个正在工作。

解决方案: 在MainActivity上,添加以下代码:

bootstrap: [ MyCheckList ]

其余部分与官方链接中的代码相同,此处为https://developer.android.com/training/appbar/actions.html#add-actions