如何聆听在android的视图上的doubletap?

我想在一个视图上检测一个doubletap ,比如一个button ,然后知道它是哪个视图。 我已经看到了这个类似的问题,但他们说这是一个重复的问题似乎并没有回答我的问题。

我所能find的只是添加一个GestureDetector到活动,并添加一个OnDoubleTapListener它。 但是,只有当我点击我的屏幕的背景/布局才会触发。 当我(双击) button不会触发。

这是我的onCreate里面的代码:

  gd = new GestureDetector(this, this); gd.setOnDoubleTapListener(new OnDoubleTapListener() { @Override public boolean onDoubleTap(MotionEvent e) { Log.d("OnDoubleTapListener", "onDoubleTap"); return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { Log.d("OnDoubleTapListener", "onDoubleTapEvent"); //if the second tap hadn't been released and it's being moved if(e.getAction() == MotionEvent.ACTION_MOVE) { } else if(e.getAction() == MotionEvent.ACTION_UP)//user released the screen { } return false; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { Log.d("OnDoubleTapListener", "onSingleTapConfirmed"); return false; } }); 

Related of "如何聆听在android的视图上的doubletap?"

你可以通过使用这几行代码来实现这一点。 就这么简单。

 final GestureDetector gd = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(){ //here is the method for double tap @Override public boolean onDoubleTap(MotionEvent e) { //your action here for double tap eg //Log.d("OnDoubleTapListener", "onDoubleTap"); return true; } @Override public void onLongPress(MotionEvent e) { super.onLongPress(e); } @Override public boolean onDoubleTapEvent(MotionEvent e) { return true; } @Override public boolean onDown(MotionEvent e) { return true; } }); //here yourView is the View on which you want to set the double tap action yourView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return gd.onTouchEvent(event); } }); 

将这段代码放在您要在视图上设置双击操作的活动或适配器上。

干杯!