【问题标题】:Why RecyclerView smoothScrollToPosition scrolled to 0 happens slowly?为什么 RecyclerView smoothScrollToPosition 滚动到 0 发生缓慢?
【发布时间】:2017-12-05 09:57:21
【问题描述】:

我有RecyclerView 并使用支持库中的ViewPagerBottomNavigationViewRecyclerView 为漂亮和舒适的滚动有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
    }

当我 smoothScrollToPositioncurrentPos = 0 回收器滚动到第一个位置 (0) 时非常慢(与其他相比 )。调用方法 smoothScrollToPositiononScrollStateChanged 之间的时间(对于参数 newState = RecyclerView.SCROLL_STATE_IDLE 的回收器视图滚动侦听器),值 1 和 2 非常小,值 = 0 大约一秒(!)

为什么会发生这种情况,我该如何解决?

【问题讨论】:

    标签: android android-recyclerview bottomnavigationview


    【解决方案1】:

    使用recyclerView.scrollToPosition(position); 而不是recycler.smoothScrollToPosition(currentPos)

    recyclerView.scrollToPosition(position);不会显示向下滚动的动画,效果会立竿见影。

    如果您为 recyclerView

    设置 linearLayoutManager,您也可以试试这个

    linearLayoutManager.scrollToPositionWithOffset(position, 0);

    【讨论】:

    • 谢谢回答,但没有动画的滚动对我的情况不利。我尝试这种方法 - linearLayoutManager.scrollToPositionWithOffset(position, 0) 但它没有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多