2017-08-03 7 views
0

私のリストビューアイテムのスワイプを実装しようとしていますが、ボタンのような隠し要素があります このボタンを表示するために左/右の項目をスワイプします。すべてが完璧に動作します。私はアイテムやボタンをクリックすることはできません。イベントMotionEvent.ACTION_UPは常にトリガされるためです。 ログ私だけの項目をクリックするだけ/タッチを作るAndroid MotionEvent.ACTION_MOVEとMotionEvent.ACTION_UP

Action DOWN 
OLD X = -329.0 
DX = -329.0 
MOVE RIGHT 
OLD X = -329.0 
DX = -330.5 
MOVE RIGHT 
OLD X = -329.0 
DX = -330.95996 
MOVE RIGHT 
Action UP 

はどんな私を助けることができますか?アイテムのクリックに対して は、このコード

float cx = event.getX(); 
    if(cx<width && cx>(width-150)) { 

と私のコード

swipeLayout.setOnTouchListener(new View.OnTouchListener() { 
      private boolean canClick = false; 


      @Override 
      public boolean onTouch(View view, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         x1 = event.getX(); 
         dX = view.getX() - event.getRawX(); 
         dY = view.getY() - event.getRawY(); 
         Logger.e("Action DOWN"); 
         oldX = dX; 
         return true; 
        case MotionEvent.ACTION_MOVE: 

         Logger.e("OLD X = " + oldX); 
         Logger.e("DX = " + dX); 
         dX = view.getX() - event.getRawX(); 
         if (oldX < dX) { 
          Logger.e("MOVE LEFT"); 
          view.animate().x(-100).setDuration(50).start(); 
          break; 
         } 

         if (oldX > dX) { 
          Logger.e("MOVE RIGHT"); 
          view.animate().x(0).setDuration(50).start(); 
          break; 
         } 


        case MotionEvent.ACTION_UP: 
         Logger.e("Action UP"); 
       } 
       return false; 
      } 
     }); 
+0

タッチ応答を処理するためにタッチリスナーと共に使用[ジェスチャー検出器(https://developer.android.com/training/gestures/detector.html):ここ が可能な例です。 –

答えて

0

を使用しようとイムスワイプ処理するためにGestureDetectorの使用を検討してください。

new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(){ 
      @Override 
      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
        float velocityY) { 
       // Here you handle short quick swipe gesture 
       return super.onFling(e1, e2, velocityX, velocityY); 
      } 

      @Override 
      public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
        float distanceY) { 
       // Here you handle slow finger movement across the screen 
       return super.onScroll(e1, e2, distanceX, distanceY); 
      } 
     }); 
+0

そのヘルプではなく、ダウンして作業しただけです。 – Peter

関連する問題