覆盖android上的物理菜单按钮
我希望Android设备上的菜单键可以打开一个对话框,而不是在我的应用程序运行时打开菜单。我试图将其编码到覆盖android上的物理菜单按钮,android,android-menu,android-keypad,Android,Android Menu,Android Keypad,我希望Android设备上的菜单键可以打开一个对话框,而不是在我的应用程序运行时打开菜单。我试图将其编码到onCreateOptions菜单(Menu Menu)中,但它只在我第一次按下菜单按钮时起作用。我可以用其他方法吗?我在活动中使用此选项来覆盖后退键,它对菜单键的作用应相同: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU &a
onCreateOptions菜单(Menu Menu)
中,但它只在我第一次按下菜单按钮时起作用。我可以用其他方法吗?我在活动中使用此选项来覆盖后退键,它对菜单键的作用应相同:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0) {
// Show your menu
} else {
return super.onKeyDown(keyCode, event);
}
}
您可以通过在“活动”中截获系统按键来覆盖系统按键的默认行为。如果要防止系统处理密钥,可覆盖事件并返回
true
。您案例的代码应如下所示:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ( keyCode == KeyEvent.KEYCODE_MENU ) {
// perform your desired action here
// return 'true' to prevent further propagation of the key event
return true;
}
// let the system handle all other key events
return super.onKeyDown(keyCode, event);
}
但这可能不适用于所有键;原因是在
活动
收到此消息之前,会将密钥发送到当前的视图
。在这种情况下,您还需要覆盖当前视图的onKeyDown
。感谢@free3dom给出了这个很棒的答案,对新的Android好友非常有用!你可能有这个蹩脚的后续行动的答案。。。欢呼声再次响起。谢谢