我开发了一款主要针对智能手机的Android应用。但是在平板电脑模拟器中我看到它也可以在android 3.x上运行。
然而,有一个小问题。用户单击菜单按钮时无法打开OptionsMenu。如您所知,智能手机上会显示一个菜单。但在平板电脑上没有任何事情发生。
我已阅读此http://developer.android.com/guide/topics/ui/menus.html#options-menu但仍无法弄清楚如何管理此问题。我的应用有一个自定义操作栏。
我的代码很直接。在主要活动中:
@Override
public boolean onCreateOptionsMenu(Menu men) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.menu, men);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
//...
}
}
以及prefs活动:
public class MdPrefsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName(
MdSharedPrefs.PREFS_NAME);
addPreferencesFromResource(R.xml.prefs);
}
}
MdSharedPrefs类只包含一些getter和setter来检索/写入pref值。
我有什么想法可以在平板电脑上显示OptionsMenu吗?
答案 0 :(得分:4)
正如文件所说:
选项菜单中的项目可通过两种不同的方式访问: “菜单”按钮或操作栏(在运行Android 3.0或更高版本的设备上) 更高)。
[...]
在Android 3.0及更高版本中,选项菜单中的项目会被放入 动作栏,出现在活动的顶部代替 传统的标题栏。默认情况下,选项菜单中的所有项目 放在溢出菜单中,用户可以通过触摸打开 操作栏右侧的菜单图标。但是,你可以 将选择菜单项直接放在操作栏中作为“操作项” 即时访问[...]
因此,对于 Android 3.0或更高版本,您可以在ActionBar
中看到仅 的菜单项。
注意到这一点也很重要:
从Android 3.0(API级别11)开始,包含操作栏 在使用Theme.Holo主题(或其中一个主题)的所有活动中 后代),这是任何一个的默认主题 targetSdkVersion或minSdkVersion属性设置为“11”或更高。
但请注意,ActionBar
只有在您没有明确隐藏它的应用程序或活动主题时才可见
android:theme="@android:style/Theme.Holo.NoActionBar"
答案 1 :(得分:0)
在平板电脑上,没有可用于加载菜单的硬件按钮,您需要在res中创建两个文件夹:第一个称为值-11,第二个称为值-14。在这些文件夹中,只要使用更高版本的设备,就将这些样式(styles.xml)替换为values文件夹中的默认基本主题:
RES /值-11
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!-- API 11 theme customizations can go here. -->
</style>
RES /值-14
<!--
Base application theme for API 14+. This theme completely replaces
AppBaseTheme from BOTH res/values/styles.xml and
res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
</style>