2017-04-26 5 views
1

私の活動で左右のスワイプをテストしています。私は次のコードを持っています:onFlingイベントが発生していません

public class MainActivity extends AppCompatActivity implements LocationListener, GestureDetector.OnGestureListener { 
    ... 
    private GestureDetectorCompat gestureDetector; 
    ... 
    protected void onCreate(Bundle savedInstanceState) { 
    ... 
    gestureDetector = new GestureDetectorCompat(this, this); 
    ... 
    } 

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 

     if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
      return false; 


     if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      // right to left swipe 
      Toast.makeText(getApplicationContext(), "right to left swipe", Toast.LENGTH_LONG); 

     } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      Toast.makeText(getApplicationContext(), "left to right swipe", Toast.LENGTH_LONG); 
     } 

    Log.i("EVENT:", "Event triggered"); 
    return true; 
    } 


    public boolean onTouchEvent(MotionEvent event) { 
    gestureDetector.onTouchEvent(event); 

    return super.onTouchEvent(event); 
    } 

私は左右にスワイプするとonFlingメソッドが呼び出されると思います。しかし、onFling内のメッセージは一切呼ばれません。コンソールを見ると、次のように表示されます。

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN 
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP 
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN 
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP 

どうしたらいいですか?

答えて

0

この問題が発生した場合は、レイアウト内の要素が原因である可能性があります。私は親の高さと幅を一致RelativeLayoutの子要素を持っていた:私はそれを削除する場合

<ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" android:id="@+id/listView" android:layout_alignParentTop="true"/> 

、onFlingイベントが呼び出されました。

関連する問題