Android 如何在物理菜单按钮上创建长触摸事件?
现在,当你按下我的android设备上的菜单按钮时,它会弹出一个软键盘。有没有办法覆盖它?我宁愿选择长按这个按钮会发生什么Android 如何在物理菜单按钮上创建长触摸事件?,android,Android,现在,当你按下我的android设备上的菜单按钮时,它会弹出一个软键盘。有没有办法覆盖它?我宁愿选择长按这个按钮会发生什么 使用onKeyLongPress时,它仅在按下“后退”按钮时检测。如何使菜单按钮工作?为此,可以使用KeyEvent.Callback-类提供的onKeyLongPress()-方法(也可以在活动中使用,因为它们是KeyEvent.Callback-类的子类) 还有一个小技巧可以实现这一点:您必须告诉Android跟踪长按“菜单”按钮,否则不会触发onKeyLongPres
使用onKeyLongPress时,它仅在按下“后退”按钮时检测。如何使菜单按钮工作?为此,可以使用
KeyEvent.Callback
-类提供的onKeyLongPress()
-方法(也可以在活动中使用,因为它们是KeyEvent.Callback
-类的子类)
还有一个小技巧可以实现这一点:您必须告诉Android跟踪长按“菜单”按钮,否则不会触发onKeyLongPress()
-方法。这是在正常的onKeyDown()
-方法中完成的
因此,您的代码可能如下所示:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// this tells the framework to start tracking for
// a long press and eventual key up. it will only
// do so if this is the first down (not a repeat).
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_MENU){
// Do what you want...
Toast.makeText(this, "I'm down!", Toast.LENGTH_SHORT).show();
return true;
}
return super.onKeyLongPress(keyCode,event);
}
在Android开发者博客上可以找到一个很好的例子