Android菜单和操作栏转换

Android菜单和操作栏转换,android,menu,android-actionbar,Android,Menu,Android Actionbar,Android中有一个新概念: 但我不清楚。我有一个支持1.6到4.0的应用程序。我想遵循这个新概念,但我不能在菜单xml中设置showAsAction属性,因为: “在包“android”中未找到属性“showAsAction”的资源标识符” 这是正常的,因为文档中有: “注意:android:showAsAction属性仅在android 3.0(API级别11)及更高版本上可用。” 我如何设置菜单,3.0以下是一个简单的菜单,而3.0以上是一个操作栏?您可以使用Build.VERSION

Android中有一个新概念:

但我不清楚。我有一个支持1.6到4.0的应用程序。我想遵循这个新概念,但我不能在菜单xml中设置showAsAction属性,因为:

“在包“android”中未找到属性“showAsAction”的资源标识符”

这是正常的,因为文档中有:

“注意:android:showAsAction属性仅在android 3.0(API级别11)及更高版本上可用。”


我如何设置菜单,3.0以下是一个简单的菜单,而3.0以上是一个操作栏?

您可以使用
Build.VERSION
在每个版本中执行不同的操作
Build.VERSION.SDK\u INT这样的程序在Eclipse中转到项目属性(右键单击项目并选择属性),
然后转到Android部分,将项目构建目标更改为Android 4.0。必须这样做,以便生成系统能够识别
showAsAction


不要担心你的项目无法在低于4.0的Android上运行,只要你不调用仅在4.0上可用的类或方法,你仍然可以运行它。

你可以使用一些操作系统技术在API级别低于11的应用程序中提供actionbar

考虑使用ActionBarSherlock。您可以将其作为库项目添加到您的项目中,如果您不设置Sherlock主题,它将不会显示操作栏(如果您不想显示),但您可以使用“showAsAction”标记菜单项。在API级别高于10的设备上,通常会显示带有菜单项的操作栏。

根据您共享的:

摘要

Android不再需要一个专用的菜单按钮,有些设备没有,您应该从使用它迁移出去。

将targetSdkVersion设置为14,然后在Android 4.0上测试你的应用程序

将showAsAction=“ifRoom”添加到要在操作栏中显示的菜单项中

如果ActionBar不适用于您的应用程序,您可以使用Theme.Holo.NoActionBar或Theme.DeviceDefault.NoActionBar将其删除

所以,你真正需要做的就是:

首先,在AndroidManifest.xml文件中设置SDK的最小版本和目标版本,如下所示:

第二步,将showAsAction=“ifRoom”添加到menu.xml文件中的菜单项中


现在在蜂巢或冰激凌三明治中运行你的应用程序,你应该在操作栏中看到你的菜单。你的应用程序应该仍然适用于Android 3.0之前的版本。

再次:我尝试了你的建议,之后我达到了showAsAction属性,我也可以检查版本:if(Build.version.SDK_INT>=Build.version_CODES.HONEYCOMB){ActionBar ActionBar=getActionBar();}我可以用2.3在我的SGS2上运行,但在我的模拟器中只有4.0,因此,具有旧版本的仿真器没有出现在列表中。我担心市场上的兼容性问题,我的程序只能在4.0机器上使用。或者取决于minSdkVersion属性?市场上的可用性取决于minSdkVersion,而不是目标。