我最近开始使用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,菜单);
如果需要更多信息,请告诉我,我将更新问题。
尝试如下:
<?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和所有兼容性库都可以正常工作。
如果您的应用程序使用支持库以实现与Android 2.1一样低的版本的兼容性,则无法从android:命名空间使用showAsAction属性。相反,此属性由支持库提供,并且您必须定义自己的XML名称空间并将该名称空间用作属性前缀。(自定义XML名称空间应基于您的应用名称,但可以是您想要的任何名称,并且只能在声明它的文件范围内访问。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句