我最近开始使用Android Studio而不是Eclipse的ADT插件。总的来说,我在Android Studio中遇到的问题非常少,而且过渡并不太困难。今晚,我在Android Studio中开始了一个新项目,并快速设置了主要活动的基本布局,并添加了一个包含三个项目的操作栏。编辑菜单xml文件时菜单的预览显示操作栏中的按钮,但是当我在我的Galaxy SII(运行android 4.2.2)或Genymotion模拟器(运行android 4.3)上启动应用程序时,按钮是总是强行进入溢出菜单。我在操作栏中禁用了应用程序标题,以确保按钮有足够的空间但仍然没有运气。
然后我在Eclipse中创建了一个项目,并将其复制到菜单的XML上。在我的手机和模拟器上,按钮显示在操作栏中而不是溢出菜单中。在这一点上,我无法看到为什么项目在两个不同的IDE中表现不同的原因。我将Eclipse项目导入到Android Studio中,令人惊讶的是,当我再次在手机和模拟器上启动应用程序时,按钮出现在操作栏中。
有没有其他人遇到过与此类似的问题?这是一个非常令人沮丧的几个小时的圈子,直到我设法在Android Studio中获得一个按照我的意愿工作的项目。
Android Studio 0.5.7中的以下步骤可以让您与我所做的相同。
将以下内容添加到文件中:
<item android:id="@+id/testmeniitem"
android:title="Test Menu Item"
android:showAsAction="always"
android:icon="@drawable/ic_launcher"
/>
预览应如下所示:
在MainActivity.java中更新onCreateOptionsMenu,以便它为测试菜单充气。
getMenuInflater()。inflate(R.menu.test_menu,menu);
如果需要更多信息,请通知我,我会更新问题。
答案 0 :(得分:5)
尝试如下:
<?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/testmeniitem"
android:title="Test Menu Item"
android:showAsAction="always"
app:showAsAction="always"
android:icon="@drawable/ic_launcher"
/>
</menu>
您需要设置自定义命名空间并设置showAsAction
两次。
我知道这很奇怪,但必须这样做,以确保showAsAction
适用于所有API和所有兼容性库。
来自ActionBar buttons documentation page:
如果您的应用使用支持库来兼容版本 与Android 2.1一样低,showAsAction属性不可用 来自android:名称空间。相反,此属性由。提供 支持库,您必须定义自己的XML命名空间并使用 该命名空间作为属性前缀。 (自定义XML命名空间应该 基于您的应用名称,但它可以是您想要的任何名称而且仅是 可在您声明它的文件范围内访问。)