我有一个应用程序范围的菜单,并不总是显示。具体来说,我的问题是,当我将没有硬件菜单按钮的设备的目标sdk版本设置为16时,应该出现的3个点(操作栏?)不会。
我有以下明确条目
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
在没有硬件按钮的avd模拟器中,我看到操作栏菜单的3个点
但如果我将目标设定为16
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
不显示操作栏
我在各种资源文件夹中设置了样式 - 值,值-v11和值-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而没有任何问题
答案 0 :(得分:5)
请参阅@S先生提供的链接Android missing MENU button,了解有关该问题的更多信息。
但要回答你的问题:
我想知道是否需要设置带样式的资源文件夹 对于所有sdk版本?
没有。它将采用最高可用API。例如,如果您有:
values.xml
values-v11.xml
values-v16.xml
以下示例Android OS API级别将使用:
values.xml
values.xml
values-v11.xml
values-v11.xml
values-v16.xml
等等。
我对于正确的方法应该是什么感到茫然 能够设置android:targetSdkVersion =“16”并拥有操作栏 (3点)菜单出现
如果活动是全屏,任何超过10的API级别(分钟或目标)都会导致点消失。解决这个问题的唯一方法是编写自己的菜单系统,或使用像ActionBarSherlock这样的填充库。
如果活动通常有标题栏,但您想将API级别设置为10以上,则必须在活动代码中设置Holo.Theme
。有关如何执行此操作,请参阅此Holo Everywhere博文和Android theme, fullscreen and the action bar。
更新:请注意,较新的Android硬件指南不需要硬件菜单按钮。此hack仅适用于使用软按钮的设备(如Nexus 7)。对于既不提供(例如许多HTC设备)的设备,即使有这种黑客,用户也无法进入菜单。 高度建议切换到操作栏概念。