Android 中菜单(Menu)键和ActionBar

Android 进入 4.0 (ICS)版本之后,虚拟按键渐渐得到了推广。同时,传统的物理菜单键逐渐被淘汰。尤其是对于平板设备,自从 Android 3.0 版本起就不再支持实体菜单键,菜单被收纳至顶部 ActionBar 之中。这一改变事实上引起了不少版本兼容性问题。

从 Android 3.0 (Honeycomb)起,程序不得不同时考虑具备传统菜单键和不具备传统菜单键的设备。这种情况下,可以通过 Action Bar 或者 OverflowButton 实现菜单功能。

在 Android 3.0 以上的设备上运行以 Android 2.3(GingerBread)或更早版本为目标版本(Target Version)的程序时,将会自动添加 LegacyOverflowButton。这是一个显示在应用切换键图标右侧的虚拟按键,功能和物理菜单键相同。如果程序的目标版本高于 Android 2.3,则不会显示该虚拟菜单键。

不过也有一个例外。在同时满足以下条件时,上述的 LegacyOverflowButton 仍然会被显示:系统版本为 Android 4.0 或更新,且设备类型为智能手机而非平板电脑;程序的 minSdkVersion 小于 10(即 Android 2.3 或更早), targetSdkVersion 为 11~13,不使用 ActionBar。

总结来说:

  • 目标版本为 Android 3.0 或更新的程序需要通过 ActionBar 提供菜单功能。但是如果具备实体菜单键,也可以调用传统的菜单(OptionMenu)。
  • 目标版本为 Android 2.3 或更早的程序通过 legacyOverflowButton 在新版系统上提供菜单功能。
  • 目标版本为 Android 3.0~3.2,minSdkVersion 小于 10(即 Android 2.3 或更早),不使用 ActionBar 的程序,在系统版本为 Android 4.0 或更新的智能手机中通过 legacyOverflowButton 在新版系统上提供菜单功能。
  • 目标版本为 Android 3.0~3.2,minSdkVersion 小于 10(即 Android 2.3 或更早),不使用 ActionBar 的程序,在系统版本为 Android 3.x 的平板电脑上无法使用菜单功能
  • 目标版本为 Android 4.0 或更新,不使用 ActionBar 的程序,在没有物理菜单键的设备上无法使用菜单功能

如要要使目标版本为 Android 2.3 或更早的程序也能使用 ActionBar,可以采用以下的方法:

res/values/styles.xml

<resources>
<style name=”AppTheme” parent=”android:Theme.Light” />
</resources>

res/values-v11/styles.xml

<resources>
<style name=”AppTheme” parent=”android:Theme.Holo.Light” />
</resources>

AndroidManifest.xml

<application
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值