【问题标题】:Android menu and action bar conversionAndroid 菜单和操作栏转换
【发布时间】:2012-02-23 00:29:15
【问题描述】:

Android 中有一个新概念:

http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html

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

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

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

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

如何设置菜单,3.0以下为简单菜单,3.0以上为ActionBar?

【问题讨论】:

    标签: android menu android-actionbar


    【解决方案1】:

    根据您分享的blog post

    总结

    Android 不再需要专用的菜单按钮,有些设备没有,您应该不再使用它。

    将 targetSdkVersion 设置为 14,然后在 Android 4.0 上测试您的应用。

    将 showAsAction="ifRoom" 添加到菜单项 您想在操作栏中显示。

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

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

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

    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" />

    其次,将 showAsAction="ifRoom" 添加到 menu.xml 文件中的菜单项。

    现在在 Honeycomb 或 Ice Cream Sandwich 中运行您的应用,您应该会在操作栏中看到您的菜单。您的应用仍应适用于 Android 3.0 之前的版本。

    【讨论】:

      【解决方案2】:

      在 Eclipse 中转到项目属性(右键单击项目并选择属性), 然后转到 Android 部分,并将 Project Build Target 更改为 Android 4.0。必须这样做,以便构建系统识别showAsAction

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

      【讨论】:

      • 再次:我尝试了你的建议,然后我到达了 showAsAction 属性,我也可以检查版本: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar( );} 我可以在我的 SGS2 上运行 2.3,但在我的模拟器中只有 4.0,所以旧版本的模拟器没有出现在列表中。我担心 Market 中的兼容性问题,我的程序只能在 4.0 机器上使用。还是取决于 minSdkVersion 属性?
      • 市场上的可用性取决于 minSdkVersion 而不是目标。
      【解决方案3】:

      你可以使用Build.VERSION在每个版本中做不同的事情。 有人喜欢Build.VERSION.SDK_INT&lt;Build.VERSION_CODES.HONEYCOMB

      【讨论】:

        【解决方案4】:

        您可以使用一些操作系统技术在 API 级别低于 11 的应用中提供操作栏。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-27
          • 1970-01-01
          相关资源
          最近更新 更多