2017-05-04 2 views
3

をスクロールアップはどのようにのみスクロールダウンできるようにする垂直Recyclerviewのスクロール機能を制限することができますか?垂直Recyclerviewだけスクロールダウン可能にするが、ブロックが

私は何とか「トップへノーリターンでリスト」を作りたいです。

EDIT:それは重複しません。私は垂直方向のスクロールを無効にしたくありません。私はちょうど上にスクロールを無効にしたい。

+0

私の知る限り、あなたはすなわち、垂直スクロールの値を取得しますonScrollStateChanged'この使用して 'onScrollChange'リスナーを'行うことができますが、 '、それはあなたがそれは情事アップを知っているか、ダウン投げつけるもらおうdy'しました。今度は、それが浮かんでいることが分かります。明示的に 'recylerview'を' recyclerView.scrollToPosition(items.size() - 1); ' –

答えて

1

私はOnItemTouchListenerを使用して解決策を考え出しました。

スクロールイベントは、3つのモーションイベント:ACTION_DOWN,ACTION_MOVEおよびACTION_UPで構成されます。

したがって、ACTION_DOWNには、カーソル(Y)の垂直位置が得られ、ACTION_MOVEは新しい位置と古い位置を比較します。

trueを戻すことにより、方法onInterceptTouchEvent()は必ず私たちは、スクロールイベントをインターセプトします。

float lastY; 

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { 
    @Override 
    public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent event) { 
     int action = event.getAction(); 
     if(action == MotionEvent.ACTION_DOWN) { 
      lastY = event.getY(); 
     } 
     if (action == MotionEvent.ACTION_MOVE && event.getY() > lastY) { 
      return true; 
     } 
     return false; 
    } 
    ... 
+0

を使って下に移動してください。 –

+0

この回答は、私が下にスワイプしても、指をスワイプしたままにしておくと、再びスワイプすることができます。 –

関連する問題