【问题标题】:Open overflow menu with hardware menu button使用硬件菜单按钮打开溢出菜单
【发布时间】:2014-12-17 09:15:06
【问题描述】:

我正在尝试覆盖 Android 上硬件菜单按钮的行为,以使其在 ActionBar 中打开溢出菜单。

感谢this question,我能够在ActionBar 中显示溢出菜单。但是当我按下硬件菜单按钮时,会打开“普通”菜单(位于屏幕底部),而不是溢出菜单。

我尝试通过覆盖我的Activity 中的onKeyDown(int, KeyEvent) 来更改此设置,但它不起作用。

if (keyCode == KeyEvent.KEYCODE_MENU) {
    // I am extending android.support.v7.app.ActionBarActivity
    this.getSupportActionBar().openOptionsMenu();

    return true;
}

经过调查,似乎getSupportActionBar()返回了android.support.v7.internal.app.WindowDecorActionBar的一个实例,在openOptionsMenu()中返回false而不是打开菜单。

还有其他方法可以实现吗?也许直接触发点击溢出图标?但是我怎样才能访问它呢?

【问题讨论】:

    标签: android android-menu


    【解决方案1】:

    你已经很久没有发布这个了,但如果你没有找到解决方案,我分享我的经验。

    实际上我正在寻找相同的行为(您按下菜单键,菜单出现在操作栏上,而不是在屏幕底部,就像您触摸溢出图标时一样,类似于 Telegram )

    我像这样覆盖 onKeyDownonKeyUp 方法:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_MENU:
                //Apparently does nothing but prevents menu pop up
                //at bottom of the screen
                return true;
            default:
                return super.onKeyDown(keyCode, event);
        }
    }
    
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_MENU:
                getSupportActionBar().openOptionsMenu();
                return true;
            default:
                return super.onKeyUp(keyCode, event);
        }
    }
    

    我相信代码是不言自明的,还请注意我在onCreate 方法中将android.support.v7.widget.Toolbar 设置为我的操作栏:

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    

    注意:其实不推荐你上面提到的solution,(为什么?缺乏一致性)我推荐使用android.support.v7.widget.Toolbar,类似Android Studio 为您创建的strong>Blank Activity 模板。 (请仔细查看代码、主题和布局)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-29
      • 2012-07-09
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多