【问题标题】:Android menu forward-compatibilityAndroid 菜单向前兼容
【发布时间】:2012-04-03 10:24:41
【问题描述】:

我创建了一个最低 SDK 7 的应用程序,以便最大限度地兼容流通设备。在Android手机(GB2.3)上,按菜单键在屏幕底部弹出菜单条,是正确的。

但是在没有菜单硬件键的 HC3.2 平板电脑上,我希望屏幕底部有一个软菜单键,但它没有出现,所以我无法打开我的菜单。

我不知道在哪里调查以及我的代码的哪一部分要分享,所以请你告诉我我必须在哪里寻找菜单软按钮?

在阅读了menus 在最新的 Android 版本中已弃用之后,我不知道 ICS4 是否有软菜单按钮。我从未在这样的设备上测试过我的应用程序。你能给我一些建议吗?

谢谢

【问题讨论】:

  • 目标 SDK 是什么?你有标题栏吗?
  • 目标 SDK 为 11。标题栏故意禁用
  • 为活动定义的样式是什么...我刚刚做了快速测试,我的 3.2 设备上有菜单软按钮...selvin.pl/hc32menu.jpg...
  • @Selvin 我想你的意思是 android:theme="@android:style/Theme.Light.NoTitleBar"?
  • "目标 SDK 为 11。标题栏被故意禁用" -- 做其中之一,而不是两者。就目前而言,您永远不会在 Android 平板电脑上拥有菜单。

标签: android compatibility android-3.0-honeycomb android-2.3-gingerbread forward-compatibility


【解决方案1】:

您提供的链接告诉您如何在应用中正确提供操作栏,以便与物理菜单按钮的存在与否无关,这是一个好的开始。

现在,您需要将其与 SDK 版本的运行时检测结合起来(只需检查 Android 1.5 或更高版本的 Build.VERSION.SDK_INT 常量)以及一些适当的 reflection 以启用相同的 APK 在任何Android 版本以您的 minSDK 版本开头。

【讨论】:

  • 感谢您的回答。我希望有一个更简单的解决方案,因为我想在不同版本中保持相同的外观和代码。由于我目前确实在 HC3.2 中使用软菜单,我认为没有任何理由放弃它(还)
  • 我同意尽量保持相同的外观,因为它可以减少用户之间的混淆,但您可能需要重新考虑,如果您的应用偏离太多,您可能会增加混淆的基本 UI 元素从用户的平台外观和感觉。
  • “我想在不同的版本中保持相同的外观......”——这对你很重要,而不是对你的绝大多数用户。您的绝大多数用户没有同时 Android 2.x 和Android 3.0+ 设备。用户希望他们使用的应用程序之间的一致性,而不是他们不拥有的设备上的同一应用程序之间的一致性。你的理由类似于那些说他们的 Android 应用程序必须看起来与他们的 iPhone 应用程序相同的人,尽管这些设备之间存在显着的导航差异。
  • @CommonsWare 感谢您强调了我的设计错误。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
相关资源
最近更新 更多