3

我开发了一个主要针对智能手机的安卓应用程序。但是在平板电脑模拟器中,我看到它也适用于 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()) {
    //...
    }
}

和偏好活动:

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 吗?

4

2 回答 2

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"
于 2012-01-12T20:42:32.463 回答
0

在平板电脑上,没有可用于加载菜单的硬件按钮,您需要在 res 中创建两个文件夹:第一个称为 values-11,第二个称为 values-14。在这些文件夹中,将这些样式 (styles.xml) 放入 values 文件夹中,这些样式将在使用更高版本的设备时替换您的默认基本主题:

资源/值-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>

资源/值-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>

于 2013-10-27T12:54:44.840 回答