実現したいこと
RecyclerViewのGridLayoutManagerで、リストを表示した際、smoothScrollToPosition
を使って、リスト最下部まで自動スクロールしています。
自動スクロールの際は、以下のようにカスタムしたGridLayoutManagerを使用し、ゆっくり下にスクロールするようにしています。
この時、リスト状で表示された各項目をタップするとイベントが発生する実装を行っていますが、自動スクロール中は以下のような現象が発生します
- 自動スクロール中にリストの項目をタップ
- 自動スクロールが停止する(タップ時のイベントは発生しない)
- 自動スクロールが停止した状態で、再度リストの項目をタップする
- タップ時のイベントが発生する
自動スクロール中でも、リストの項目をタップするとイベントを発生させたいと考えていますが、現在実現できていません。
ぜひ、アドバイス等いただけると助かります。
よろしくお願いいたします。
↓ カスタムしたGridLayoutManager
java
1public class CustomGridLayoutManager extends GridLayoutManager { 2 private static final float MILLISECONDS_PER_INCH = 5000f; 3 private Context mContext; 4 5 public CustomGridLayoutManager(Context context, int spanCount) { 6 super(context, spanCount); 7 mContext = context; 8 } 9 10 @Override 11 public void smoothScrollToPosition(RecyclerView recyclerView, 12 RecyclerView.State state, final int position) { 13 14 LinearSmoothScroller smoothScroller = 15 new LinearSmoothScroller(mContext) { 16 17 @Override 18 public PointF computeScrollVectorForPosition 19 (int targetPosition) { 20 return CustomGridLayoutManager.this 21 .computeScrollVectorForPosition(targetPosition); 22 } 23 24 @Override 25 protected float calculateSpeedPerPixel 26 (DisplayMetrics displayMetrics) { 27 return MILLISECONDS_PER_INCH/displayMetrics.densityDpi; 28 } 29 }; 30 31 smoothScroller.setTargetPosition(position); 32 startSmoothScroll(smoothScroller); 33 } 34}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。