触摸屏的GridView问题

时间:2011-02-21 08:20:37

标签: android gridview ontouchevent

我正在尝试创建一个自定义GridView,但我遇到了触摸听众的麻烦。

我想做什么:

  • 使用自定义GridView创建Views
  • 对项目进行长按,使其变为“可编辑”。
  • 将视图水平或垂直拖动以移动它在GridView中的位置。

这是我遇到麻烦的地方:
我正在为longpress函数实现GestureDetector.OnGestureListener,因为出于某种原因,在覆盖gridview.setOnItemLongClickListener()本身的onTouchEvent()时使用GridView无法正常工作(我需要拖动部分)。所以此时一切都很好。现在我只需要知道何时完成长按。所以我说:“这应该不会很难。”我不能再错了。我已经玩了很长时间了,看起来使用不同的触摸事件并没有帮助我:/
当单步执行onTouchEvent()时,我发现只有1个动作:MotionEvent.ACTION_DOWN。那我做错了什么?我需要MotionEvent.ACTION_UP ...

1 个答案:

答案 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;
}