我正在尝试创建一个自定义GridView
,但我遇到了触摸听众的麻烦。
我想做什么:
GridView
创建Views
。GridView
中的位置。 这是我遇到麻烦的地方:
我正在为longpress函数实现GestureDetector.OnGestureListener
,因为出于某种原因,在覆盖gridview.setOnItemLongClickListener()
本身的onTouchEvent()
时使用GridView
无法正常工作(我需要拖动部分)。所以此时一切都很好。现在我只需要知道何时完成长按。所以我说:“这应该不会很难。”我不能再错了。我已经玩了很长时间了,看起来使用不同的触摸事件并没有帮助我:/
当单步执行onTouchEvent()
时,我发现只有1个动作:MotionEvent.ACTION_DOWN
。那我做错了什么?我需要MotionEvent.ACTION_UP
...
答案 0 :(得分:2)
找到了罪魁祸首:
我正在做这样的事情
@Override
public boolean onTouchEvent(MotionEvent event) {
// Give everything to the gesture detector
boolean retValue = gestureDetector.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE :
onMove();
break;
case MotionEvent.ACTION_UP :
onUp();
break;
case MotionEvent.ACTION_CANCEL:
onCancel();
break;
}
return retValue;
}
我认为retValue
总是返回false,因此没有触发其他事件
这解决了这个问题:
@Override
public boolean onTouchEvent(MotionEvent event) {
// Give everything to the gesture detector
gestureDetector.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE :
onMove();
break;
case MotionEvent.ACTION_UP :
onUp();
break;
case MotionEvent.ACTION_CANCEL:
onCancel();
break;
}
return true;
}