如何在平板电脑上打开OptionsMenu?

时间:2012-01-12 20:32:42

标签: android android-optionsmenu

我开发了一款主要针对智能手机的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吗?

2 个答案:

答案 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>