5

我有一个不会总是显示的应用程序范围的菜单。具体来说,我的问题是,当我将没有硬件菜单按钮的设备的目标 sdk 版本设置为 16 时,实际上应该出现的 3 个点(操作栏?)却没有。

我有以下清单条目

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" />

在没有硬件按钮的 avd 模拟器中,我看到操作栏菜单的 3 个点

但是如果我将目标设置为 16

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />

没有操作栏出现

我在各种资源文件夹中设置了样式 - values、values-v11 和 values-v14

特别是在 values-v14 中,我有一个 styles.xml 文件,其中指出

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" />

设置主题的清单条目是

<application android:label="@string/app_name"
android:name="uk.co.pjadult.mobile.adult_reader_lib.BookLib"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">

我想知道是否需要为所有 sdk 版本设置具有样式的资源文件夹?

我不知道正确的方法应该是什么才能设置 android:targetSdkVersion="16" 并显示操作栏(3个点)菜单

更新我现在使用 ActionBarSherlock 没有问题

4

1 回答 1

5

有关该问题的更多信息,请参阅@Mr.S 提供的链接,Android 缺少 MENU 按钮

但要回答你的问题:

我想知道是否需要为所有 sdk 版本设置具有样式的资源文件夹?

不,它将采用最高可用的 API。例如,如果您有:

  • values.xml
  • values-v11.xml
  • values-v16.xml

以下示例 Android OS API 级别将使用:

  • API 4:values.xml
  • API 10:values.xml
  • API 11:values-v11.xml
  • API 13:values-v11.xml
  • API 16:values-v16.xml

等等。

我不知道正确的方法应该是什么才能设置 android:targetSdkVersion="16" 并显示操作栏(3个点)菜单

如果活动是全屏的,任何高于 10 的 API 级别(最低或目标)都会导致点消失。解决这个问题的唯一方法是编写自己的菜单系统,或者使用像ActionBarSherlock这样的垫片库。

如果活动通常有标题栏,但您想将 API 级别设置为 10 以上,则必须Holo.Theme为活动设置输入代码。请参阅此Holo Everywhere博客文章和Android 主题、全屏和操作栏,了解如何执行此操作。

更新:请注意,较新的 Android 硬件指南不需要硬件菜单按钮。而且这个hack只适用于使用软按钮的设备(比如Nexus 7)。对于两者都不提供的设备(例如许多 HTC 设备),用户将无法进入菜单——即使有这个 hack。强烈建议切换到操作栏概念。

于 2012-11-12T04:25:24.627 回答