【问题标题】:Show action bar also for menu button?还为菜单按钮显示操作栏?
【发布时间】:2012-06-06 06:30:57
【问题描述】:

我正在 ICS 上创建一个操作栏。由于间距,仅显示图标。 但是,如果按下手机的菜单按钮,我还想将操作栏作为类似上下文的菜单 with 文本提供。

我怎样才能做到这一点?

ATM 我有 3 个图标。其中 2 个显示在操作栏的顶部。 如果我按下菜单电话按钮,第三个显示为上下文菜单!但我想拥有所有 3 个。

class MyActivity extends SherlockFragmentActivity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getSupportMenuInflater();

        /* IMPLEMENTATION HERE */
    }
}

【问题讨论】:

  • 您的代码无法编译...return 语句在哪里?
  • //inflace etc 应该表示还有更多,当然还有return语句。问题不在于代码,而在于如何实现操作栏和上下文菜单按钮都可以显示所有菜单项?
  • 你的意思是溢出菜单吗?上下文菜单提供了影响 UI 中特定项目或上下文框架的操作。它们的用途与操作栏不同。
  • 哦,好吧,那我误用了“上下文菜单”这个词。我的意思是存在于例如 GINGERBREAD 中的 old 选项菜单:如果用户按下手机的菜单按钮,他可以选择:选项、关于、Impressum 等。我现在的问题是,我会喜欢同时拥有:ICS ActionBar 和旧的弹出菜单。

标签: java android actionbarsherlock


【解决方案1】:

来自Menus上的文档:

如果菜单项未作为操作项出现,则系统将其置于溢出菜单中。

因此,在操作栏溢出菜单中显示相同的操作项是不可能的。你可以做的是:

  1. 检查(在运行时)哪些菜单项适合操作栏,哪些不适合。

  2. 对于显示在操作栏中的每个菜单项,动态创建一个新的、相同的菜单项,确保调用 newMenuItem.setShowAsAction(SHOW_AS_ACTION_NEVER) 以确保它显示在溢出菜单中(带文本)。

在我看来,这违反了 Android 的菜单设计标准,我不建议这样做。在您看来,它可能看起来像是更好的设计选择,但用户希望应用程序在整个 Android 平台上保持一致。以奇怪的方式操作菜单可能会导致混乱,从而对用户体验产生负面影响。

【讨论】:

  • 好的,谢谢。我想我会听从你的建议并保持原样。