【发布时间】:2012-12-20 05:44:50
【问题描述】:
如何在 Honeycomb 或 ICS 平板电脑上显示选项菜单,而没有操作栏?
经过一番尝试,如果没有操作栏且targetsdkversion >=11,似乎无法在 Honeycomb 设备上设置选项菜单。即使您的主题是Theme.Holo.NoActionBar。我可以看到在带有targetsdkversion>=11 的 Honeycomb 上显示选项菜单的唯一方法是使用确实有操作栏的主题,然后将其隐藏在 onCreate 中。
我能看到在 Honeycomb 上显示旧面板菜单的唯一方法是使用 targetsdkversion
总而言之,在 Honeycomb 中,如果您没有操作栏,就没有选项菜单,除非您的目标是 11 以下。这似乎像一个错误。在 ICS 及更高版本中,您可以 有任何你喜欢的选项菜单,不管你是否真的有一个操作栏。
我最初的目标是能够在 Honeycomb 及更高版本上使用旧样式的面板菜单和新的操作栏菜单(在不同的活动中),同时在 Honeycomb 下方的任何地方使用面板菜单。
原因是有一个 Activity 需要有大的菜单按钮,但应用程序的其余部分可以完美地全息化。
为了实现这一点,我在所有地方都使用了Theme.Holo(用于 api 11+),除了我使用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 上,完全相同的应用程序将在手机上显示面板菜单,而在平板电脑上则不显示任何内容。嗯?
【问题讨论】:
标签: android android-actionbar android-menu