1

カスタムを作成しようとしていますGridViewが、タッチ リスナーに問題があります。

私がしたいこと:

  • GridViewカスタムで を作成しますViews
  • 項目を長押しすると、「編集可能」になります。
  • ビューを水平または垂直にドラッグして、 内の位置を移動しGridViewます。

ここで私は問題を抱えています:
私は longpress 関数を実装しGestureDetector.OnGestureListenerていgridview.setOnItemLongClickListener()ます. したがって、この時点ではすべて問題ありません。これで、長押しがいつ終了するかを知るだけで済みます。だから私は、「まあ、これは難しくないはずだ」と言いました。私はもっ​​と間違っていたはずがありません。私はこれをかなり長い間いじっていましたが、別のタッチイベントを使用しても役に立たないようです:/ ステップスルーすると、アクションが1つしかないことに気付きました: . それで、私は何を間違っていますか?私は...が必要ですonTouchEvent()GridView
onTouchEvent()MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP

4

1 に答える 1

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;
}
于 2011-02-21T08:56:04.813 に答える