首页 > 解决方案 > 使用连接多个视图的单个手势检测器获得双击/触摸视图

问题描述

我使用带有多个视图的单个手势检测器。我不确定这是否是最好的方法,但是为每个视图提供自己的手势检测器会使我的代码非常大。现在,如果我双击我的一个视图,我想检查哪个视图被双击。无法弄清楚如何:(。我将所有视图连接到同一个手势检测器的原因是因为它们在双击时都需要做同样的事情。

我已经搜索了互联网,但找不到任何有用的东西。我希望我的代码能让一切变得更清楚。

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

标签: javaandroidgesturedetector

解决方案


好吧,我现在觉得很愚蠢,但我找到了答案。我只需要创建一个变量并将其设置在 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
}

推荐阅读