使用SupportActionBar和v7支持工具栏时,有没有办法捕获硬件菜单按钮的onkeydown事件?

时间:2018-06-13 17:30:08

标签: android xamarin xamarin.android android-support-library android-actionbar-compat

我的AppCompatActivity axml使用Android.Support.v7.Widget.Toolbar,而Activity将工具栏设置为SetSupportActionBar(toolbar);。一切都按预期工作,但我想覆盖整个活动的OnKeyDown事件,以防止硬件按钮单击。似乎SupportActionBar(只是一个ActionBar)使用硬件菜单按钮的事件,因此活动的OnKeyDown从不捕获菜单按钮单击。

我已尝试覆盖工具栏视图及其OnKeyDown事件,但SupportActionBar也会使用此事件。

我的工作是添加一个看起来像Overflow Menu图标的菜单项,并在OnOptionsItemSelected中打开一个弹出窗口。但是,这并不理想。

1 个答案:

答案 0 :(得分:-1)

您可以在Activity中覆盖onKeyDown / onKeyUp处理程序。

@Override
public boolean onKeyDown(int keyCode, final KeyEvent event) {
    if( keyCode == KeyEvent.KEYCODE_MENU ) {
        return true; // Ignore the keypress
    }
    return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, final KeyEvent event) {
    if( keyCode == KeyEvent.KEYCODE_MENU )
        return true; // Ignore the keypress
    }
    return super.onKeyUp(keyCode, event);
}