java - 使用连接多个视图的单个手势检测器获得双击/触摸视图
问题描述
我使用带有多个视图的单个手势检测器。我不确定这是否是最好的方法,但是为每个视图提供自己的手势检测器会使我的代码非常大。现在,如果我双击我的一个视图,我想检查哪个视图被双击。无法弄清楚如何:(。我将所有视图连接到同一个手势检测器的原因是因为它们在双击时都需要做同样的事情。
我已经搜索了互联网,但找不到任何有用的东西。我希望我的代码能让一切变得更清楚。
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
解决方案
好吧,我现在觉得很愚蠢,但我找到了答案。我只需要创建一个变量并将其设置在 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
}
推荐阅读
- angular - 使用 Typescript + Angular 填充日期输入
- c++ - C++终端句柄按键在屏幕上运行
- tensorflow - 如何使用张量流将 [1,2,3,4,5,6] 重塑为 [[1,3,5],[2,4,6]]?
- dart - Flutter:实现 peek & pop 效果
- json - 将结构编组和解组到 json 会丢失信息
- javascript - WebPack 配置失败
- java - Hibernate 是否会检测到何时使用 id?
- matlab - Matlab & HDF5:写入的字符串属性具有 b'string' 格式
- vba - VBA Excel GetObject 问题 - 运行时错误 91 - 对象变量或未设置块变量
- angular - 如何在angular4中动态地将formGroup添加到模板驱动的表单中?