Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在物理菜单按钮上创建长触摸事件?_Android - Fatal编程技术网

Android 如何在物理菜单按钮上创建长触摸事件?

Android 如何在物理菜单按钮上创建长触摸事件?,android,Android,现在,当你按下我的android设备上的菜单按钮时,它会弹出一个软键盘。有没有办法覆盖它?我宁愿选择长按这个按钮会发生什么 使用onKeyLongPress时,它仅在按下“后退”按钮时检测。如何使菜单按钮工作?为此,可以使用KeyEvent.Callback-类提供的onKeyLongPress()-方法(也可以在活动中使用,因为它们是KeyEvent.Callback-类的子类) 还有一个小技巧可以实现这一点:您必须告诉Android跟踪长按“菜单”按钮,否则不会触发onKeyLongPres

现在,当你按下我的android设备上的菜单按钮时,它会弹出一个软键盘。有没有办法覆盖它?我宁愿选择长按这个按钮会发生什么


使用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开发者博客上可以找到一个很好的例子