我使用的是带有多个视图的单个手势检测器。我不确定这是否是最好的方法,但是为每个视图提供自己的手势检测器会使我的代码很大。现在,如果我双击其中一个视图,我想检查双击哪个视图。我不知道如何:(。我将所有视图连接到同一个手势检测器的原因是,当两次轻按时,它们都需要执行相同的操作。
我已经搜索了互联网,但找不到任何有用的信息。我希望我的代码可以使所有事情变得更加清晰。
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
最佳答案
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
}