我最近开始使用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);
如果需要更多信息,请告知我,我将更新问题。
尝试如下:
<?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] 删除。
我来说两句