使用连接了多个视图的单个手势检测器获取双击/触摸的视图

时间:2019-06-03 14:01:09

标签: java android gesturedetector

我使用一个带有多个视图的手势检测器。我不确定这是否是最好的方法,但是为每个视图提供自己的手势检测器会使我的代码很大。现在,如果我双击其中一个视图,我想检查双击哪个视图。我无法弄清楚:(。我将所有视图连接到同一手势检测器的原因是,当双击时,它们都需要执行相同的操作。

我已经搜索了互联网,但找不到任何有用的信息。我希望我的代码可以使一切变得更加清晰。

implements View.OnTouchListener, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener

gestureDetector = new GestureDetector(this, this);

textView1.setOnTouchListener(this);
textView2.setOnTouchListener(this);
textView3.setOnTouchListener(this);
textView4.setOnTouchListener(this);
textView5.setOnTouchListener(this);
textView6.setOnTouchListener(this);

@Override
public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}

public boolean onDoubleTap(MotionEvent e) {
    editMode();
    //Get tapped View
    return false;
}

我想在onDoubleTap()中看到输出;像:当前双击的视图是:(我的textView之一)。我还发现,如果我先点击textView1,然后再点击textView2,onDoubleTap();将被触发。这意味着,如果答案选择了最后被点击的视图,那就太好了。希望任何人都可以帮助:D

1 个答案:

答案 0 :(得分:0)

Okey我现在觉得很蠢,但是我找到了答案。我只需要创建一个变量并在OnTouch()中进行设置即可。

@Override
public boolean onTouch(View v, MotionEvent event) {
   //Get id of touched View
   getViewByID = v.getId();
   return gestureDetector.onTouchEvent(event);
}

然后我可以在任何需要的地方使用此变量。

if (getViewByID == R.id...) {
   //Change text for example
}