我有RecyclerView
并使用支持库中的ViewPager
代替BottomNavigationView
。 RecyclerView
非常舒适地滚动PagerSnapHelper
。
我遇到了一个可怕而奇怪的问题:
当我的BottomNavigationView
听众抓住方法onNavigationItemSelected
的新位置时,我会这样做:
override fun onNavigationItemSelected(item: MenuItem): Boolean {
var newPos = -1
//little code for checked only a NEW position, the same values ignored
recycler.smoothScrollToPosition(currentPos) //values 0, 1 and 2
return true
}
当smoothScrollToPosition
与currentPos = 0
回收者滚动到第一位置(0)非常慢时(与其他相比)
)。调用方法smoothScrollToPosition
和onScrollStateChanged
之间的时间(对于具有参数newState = RecyclerView.SCROLL_STATE_IDLE
的回收器视图滚动侦听器),值1和2非常小,值= 0大约一秒(!)
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
使用recyclerView.scrollToPosition(position);
代替recycler.smoothScrollToPosition(currentPos)
recyclerView.scrollToPosition(position);
不会显示向下滚动的动画,效果会立竿见影。
如果为 recyclerView
设置 linearLayoutManager ,也可以尝试此操作 linearLayoutManager.scrollToPositionWithOffset(position, 0);