- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在没有操作栏的情况下在 Honeycomb 或 ICS 平板电脑上显示选项菜单?
经过一番尝试后,如果没有操作栏并且 targetsdkversion
>=11,似乎无法在 Honeycomb 设备上使用选项菜单。即使您的主题是 Theme.Holo.NoActionBar
。我能看到在 targetsdkversion
>=11 的 Honeycomb 上显示选项菜单的唯一方法是使用具有操作栏的主题,然后将其隐藏在 onCreate
中。我可以看到在 Honeycomb 上显示旧面板菜单的唯一方法是使用 targetsdkversion
<=10。
总而言之,在 Honeycomb 中,如果您没有操作栏,就没有选项菜单,除非您的目标低于 11。这看起来像个 bug 。在 ICS 及更高版本中,您可以有任何你喜欢的选项菜单,不管你是否真的有一个操作栏。
我最初的目标是能够在 Honeycomb 及更高版本上使用旧式面板菜单和新的操作栏菜单(在不同的 Activity 中),同时在 Honeycomb 下面的任何地方使用面板菜单。
原因是有一个 Activity 需要有大菜单按钮,但是应用程序的其余部分可以完美地全息化。
为了实现这一点,我在所有地方都使用了 Theme.Holo
(适用于 api 11+),除了这个我使用 Theme.NoTitlebar
的 Activity 。我有 android:minSdkVersion="5"android:targetSdkVersion="14"
,所以不显示支持菜单键(因此不会在一些新的 HTC 手机上浪费屏幕空间)。如果设备没有硬件菜单按钮,我会提供自己的按钮来弹出面板菜单(通过 http://developer.android.com/reference/android/view/ViewConfiguration.html#hasPermanentMenuKey () )
问题是,这在 Honeycomb 平板电脑(Galaxy Tab、Honeycomb 3.2)上不起作用。使用操作栏的正常 Activity 工作正常,但在特殊 Activity 中,当我按下菜单按钮(我在 UI 中提供的那个)时没有任何反应。
这在至少 2 个 ICS 手机和模拟器(有和没有硬件菜单键)上都可以正常工作。正常的操作栏菜单无处不在,除了这个 Activity ,我在那里获得了大面板菜单。
那么解决方案是什么?这是 Galaxy Tab 还是 Honeycomb 的问题?我应该使用不同的主题来提供面板菜单吗?
编辑:我买了一个 ICS 平板电脑进行更多测试,发现面板菜单也没有出现。 因此,在相同版本的 Android 上,完全相同的应用程序将在手机上显示面板菜单,而在平板电脑上什么也没有。嗯?
最佳答案
以下是 Honeycomb 及以上 Android 版本的 PhoneWindow 系统类的摘录。它实际上是针对 Android 目标版本和设备屏幕尺寸的硬编码检查。您能否避免此检查 - 菜单会正常显示。但是没有这种可能。这就是为什么无法在目标 sdk 设置为 10 以上的值的 Honeycomb+ 设备上显示选项菜单的原因。有趣的是,如果可以显示操作栏菜单,它将更早显示,并且永远不会达到此代码。因此,代码上方的注释看起来特别 mock 。
// Don't open an options panel for honeycomb apps on xlarge devices.
// (The app should be using an action bar for menu items.)
if (st.featureId == FEATURE_OPTIONS_PANEL) {
Context context = getContext();
Configuration config = context.getResources().getConfiguration();
boolean isXLarge = (config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_XLARGE;
boolean isHoneycombApp = context.getApplicationInfo().targetSdkVersion >=
android.os.Build.VERSION_CODES.HONEYCOMB;
if (isXLarge && isHoneycombApp) {
return;
}
}
关于android - 如何在没有操作栏的情况下在 Honeycomb 上显示选项菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13966017/
我正在寻找一种解决方案,当项目具有以下内容时,更改 HoneyComb 操作栏的选项菜单项的文本颜色: android:showAsAction="ifRoom|withText" 我尝试了很多不同的
我想为 Honeycomb 创建一些小部件,我已经成功创建了一个 StackView widget对于我的应用程序,但我想在 Honeycomb 中添加一些其他的新小部件。 我特别想查找上图中右侧小部
我正在为 Honeycomb 开发,几天来我一直在努力解决这个问题。我有一个没有 Intent 的通知服务(不需要一个),问题是每次调用 displaymessage 函数后,每次都会弹出通知,所以我
我读了很多关于这个问题的问题,但我找不到正确的方向来解决我的问题,也许是因为我是菜鸟,迫切希望找到正确的方法...... 据我所知,“requering already closed cursor”问
我已经安装了 android sdk for windows。我当时使用的是 API 级别 8 和 API 级别 15。 现在我想使用 Honeycomb for Tablets。但我不知道如何在我的
我知道这个问题对某些人来说可能听起来很愚蠢,但 Honeycomb 仅适用于平板电脑吗?我正在做一个论文项目,为移动设备开发一个 Android 应用程序:你建议我应该使用哪个版本?我猜是最受欢迎的那
我一直在研究如何将我的应用程序 (android:maxSdkVersion = “10”) 升级到 Honeycomb,并希望得到一些建议。 首先,我的应用程序中的一个 Activity 是列表 A
我有一个 Android 应用程序,它偶尔会显示 Assets 文件夹中包含的静态网页。我一直在以编程方式显示这些: webView = new WebView(PKBDocument.Knowled
代码: path = "httplive:///moviets/index.m3u8"; // Create a new media player and set th
我想在 default media player 中为 honeycomb 添加一些功能,而不是使用 Android 中的 mediaPlayer 包创建任何其他类,例如通过滑动屏幕显示特定视频的信息
我有一个应用程序,允许用户转到照片库并选择一张照片用作头像。该代码在任何地方都可以正常工作,但 Xoom 除外,它会启动图库,允许用户选择照片,然后失败并显示“java.lang.RuntimeExc
如何在没有操作栏的情况下在 Honeycomb 或 ICS 平板电脑上显示选项菜单? 经过一番尝试后,如果没有操作栏并且 targetsdkversion >=11,似乎无法在 Honeycomb 设
在 Android 的 pre-Honeycomb 版本中,我跟踪了内存的外部分配 VMRuntime.getRuntime().getExternalBytesAllocated() 或使用 Deb
几周来我一直在编写我的第一个应用程序,今天我意识到如果我们想为 Honeycomb 和普通手机开发,我们应该将它们打包为一个应用程序而不是两个具有不同目标的应用程序。 因此,我在 Eclipse 中启
我正在尝试检查我的蜂窝应用程序上是否有一个简单的连接可用。我尝试了 2 个不同版本的函数: public boolean networkAvailable() { Connectiv
我有一个包含大量 Activity 的应用程序。我在 list 中设置了这个: 我还设置了 v11 样式,以便所有 Activity 都使用 v11+ 上的 Holo 主题。 问题是我的所有 Act
我正在开展一个个人项目,该项目将包括一个主屏幕小部件,该小部件使用来自服务的信息进行更新 - 我正在使用 Android 3.1 平板电脑(实体)和 Android 2.3 模拟手机进行开发。 对于
我正在尝试将视频文件从我的内部存储加载到 VideoView。我从服务器下载这些视频文件,然后使用以下代码将它们存储在本地: FileOutputStream out = openFileOutput
我有一个应用程序可以从设备上的联系信息中检索邮寄地址。我使用类似于下面的代码使用联系人 API 检索街道地址、邮政编码、城市等信息。然后我在不同的行上显示地址,用户可以接受它或根据需要更改它。 Str
我只是一个在业余时间编写 iOS 和 Andorid 应用程序的人。我有一些 Android 应用程序,我认为它们很适合进行更新,使它们能够在 Honeycomb 上本地运行。 但是,由于我没有 Ho
我是一名优秀的程序员,十分优秀!