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



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

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

我的解决方法是添加一个看起来像溢出菜单图标的菜单项,并在OnOptionsItemSelected中打开一个弹出窗口。但是,这并不理想。

您可以在 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);
}

最新更新