如何在 Honeycomb 或 ICS 平板电脑上显示选项菜单,而没有操作栏?
targetsdkversion
在玩了一些之后,如果没有操作栏并且> = 11 ,似乎没有办法在 Honeycomb 设备上设置选项菜单。即使您的主题是Theme.Holo.NoActionBar
. 我可以看到在具有 >=11 的 Honeycomb 上显示选项菜单的唯一方法targetsdkversion
是使用具有操作栏的主题,然后将其隐藏在onCreate
. 我可以看到在 Honeycomb 上显示旧面板菜单的唯一方法是使用targetsdkversion
<=10。
总之,在 Honeycomb 中,如果您没有操作栏,则没有选项菜单,除非您的目标低于 11。这似乎是一个错误。在 ICS 及更高版本中,无论您是否真的有操作栏,您都可以拥有任何您喜欢的选项菜单。
我最初的目标是能够在 Honeycomb 及更高版本上使用旧样式的面板菜单和新的 Action Bar 菜单(在不同的活动中),同时在 Honeycomb 下方的任何地方使用面板菜单。
原因是有一个活动需要有大的菜单按钮,但应用程序的其余部分可以完美地全息。
为了实现这一点,Theme.Holo
除了我使用Theme.NoTitlebar
. 我有android:minSdkVersion="5" android:targetSdkVersion="14"
,所以不显示支持菜单键(因此不会在一些新的 HTC 手机上浪费屏幕空间)。如果设备没有硬件菜单按钮,我会提供自己的按钮来弹出面板菜单(通过http://developer.android.com/reference/android/view/ViewConfiguration.html#hasPermanentMenuKey () )
问题是,这不适用于 Honeycomb 平板电脑(Galaxy Tab,Honeycomb 3.2)。带有操作栏的正常活动工作正常,但在特殊活动上,当我按下菜单按钮(我在 UI 中提供的那个)时没有任何反应。
这在至少 2 部 ICS 手机和模拟器上运行良好(有和没有硬件菜单键)。除了在这个活动中,我得到大面板菜单之外的所有地方的正常操作栏菜单。
那么解决方案是什么?这是 Galaxy Tab 还是 Honeycomb 的问题?我应该使用不同的主题来提供面板菜单吗?
编辑:我获得了一个 ICS 平板电脑进行更多测试,发现面板菜单也没有出现在那里。因此,在相同版本的 Android 上,完全相同的应用程序将在手机上显示面板菜单,而在平板电脑上则不显示任何内容。嗯?