我一直试图关注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
仍然隐藏在动作溢出下(不是它被称为什么?)按钮。难道我做错了什么?任何帮助表示赞赏。英语不是我的第一语言,我的写作风格有点糟糕,很抱歉。
答案 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