カスタム リスト ビューがあり、現在、リスト ビューが過剰にスクロールされたとき (つまり、境界を超えてプッシュされたとき) にカスタム動作を実行しようとしています。
すべてが完全に機能していますが、オーバー スクロールは、リスト ビューが既に限界に達しているときにユーザーがリスト ビューをドラッグまたはフライングした場合にのみ機能するように見えます。これは、リストが最初の要素にあるときにユーザーが強いフリングを行うと、最後の要素に到達したときにリストのスクロールが突然停止し、ユーザーがフリングまたはドラッグダウンした場合にのみ、オーバースクロール機能が作動することを意味します。
リストの一番上からの強いフリングに対して、オーバースクロールが適切に機能するようにしようとしています。overScrollBy
" " メソッドが正しいdeltaY
値で数回呼び出されていることがわかりますが、 scrollY
0 のままです。
しばらくオンラインでこの問題の解決策を探していましたが、資料が見つかりませんでした。
これが私のoverScrollBy
実装です:
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)
{
if (!isTouchEvent)
{
deltaY = -scrollY / 10;
if (Math.abs(deltaY) <= 1)
deltaY = -scrollY;
}
if (mInPreviewMode && scrollY <= 0)
{
mSPListContainer.onOverScroll((float)Math.abs(scrollY) / (float)mMaxYOverscrollDistance);
}
super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);
return true;
}