【问题标题】:What determines if the legacy menu button shows in Honeycomb system bar?什么决定了遗留菜单按钮是否显示在 Honeycomb 系统栏中?
【发布时间】:2023-04-08 08:15:01
【问题描述】:

我有一个包含大量活动的应用程序。我在清单中设置了这个:

<uses-sdk android:minSdkVersion="4"  targetSdkVersion="11"/>

我还设置了 v11 样式,以便活动都使用 v11+ 上的 Holo 主题。

问题是我的所有活动都在系统栏上显示旧菜单按钮。我的具有菜单的活动(我使用 onCreateOptionsMenu 的活动)同时显示旧菜单按钮和操作栏溢出菜单按钮。按旧版按钮可展开屏幕右上角的菜单。

在我不使用 onCreateOptionsMenu 的活动上,仍然有一个不做任何事情的旧按钮。

我无法弄清楚发生了什么。 Hackborn 写到 targetSdkVersion 是唯一控制是否显示旧按钮的东西:link

编辑:澄清问题的描述。

【问题讨论】:

  • 我的应用中确实有一个 TabActivity,但我知道它已被弃用。但我不希望这会影响我的应用程序中的所有其他活动。我曾尝试将选项卡转换为片段,但有很多方法停止工作,我现在无法花时间完全重写这些活动。

标签: android


【解决方案1】:

我发现你和我犯了同样的错误。

您的 targetSdkVesrion 名称缺少 android: 前缀,因此它实际上被忽略了。 应该是:

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11"/>

现在您的应用将面向 v11,并且您永远不会获得旧版菜单按钮。

另见相关讨论:

  1. Honeycomb themes *.NoActionBar or *.NoTitleBar - where is Menu button?
  2. Android and Honeycomb - how to have a menu icon with SDK 13 without having an "action bar"

【讨论】:

    【解决方案2】:

    您需要将 android:showAsAction="ifRoom|withText" 添加到 XML 中的菜单项。除非您针对 Android 3.0 构建,否则这将引发错误。当您切换到此版本进行构建时,请确保您不使用任何仅限 3.0 的方法调用,因为它会在旧版本上崩溃而不会出现编译时错误。

    【讨论】:

    • 谢谢,但这对所描述的问题没有影响。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多