【发布时间】:2019-01-27 02:27:18
【问题描述】:
在我的项目中,我使用了一个我只想通过调用 LayoutManager 的 startSmoothScroll() 方法来滚动的 RecyclerView:
private fun next(){
val layoutManager = pager.layoutManager as BattlePageLayoutManager
layoutManager.startSmoothScroll(smoothScroller(layoutManager.findFirstVisibleItemPosition() + 1))
layoutManager.finishScroll()
}
我不希望用户能够手动滚动,例如。 G。通过刷卡。
我已经尝试通过覆盖父 FrameLayout 的 onInterceptTouchEvent() 方法来实现这一点。
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
if (ev.actionMasked == MotionEvent.ACTION_DOWN){
startClickTime = System.currentTimeMillis()
startX = ev.x
startY = ev.y
}
val allowEvent = (System.currentTimeMillis() - startClickTime) < 1000 && (startX-ev.x).absoluteValue < 15 && (startY-ev.y).absoluteValue < 15
return !allowEvent
}
这基本上是有效的,但是在双击视图后,用户可以自己滚动。
您还有其他想法可以解决这个问题吗?
【问题讨论】:
-
是
ViewPager还是RecyclerView想要阻止滚动?我看到您要求RecyclerView,但我也看到您的layoutManager来自pager。 -
它是一个 RecyclerView,但它的工作方式类似于 ViewPager。我这样做是因为我想使用 Android Paging Library。有没有使用 ViewPager 实现这些行为的简单方法?
标签: android android-layout kotlin android-recyclerview