android - RecyclerView 滚动到没有动画的所需位置

标签 android

以前,当我想将 ListView 滚动到所需位置时,我会使用

listView.setSelection(row);

ListView 将在没有任何动画的情况下滚动 - Android List View set default position without animation

现在,我想在 RecyclerView 上实现同样的效果。我尝试执行

((LinearLayoutManager)recyclerView.getLayoutManager()).scrollToPositionWithOffset(row, 0);

但是,有滚动动画,我想避免。

有什么方法可以在没有动画的情况下以编程方式执行滚动?

这就是我想要的动画 - https://youtu.be/OKsUKwBLoks

请注意,我已经尝试过以下方法。它们都会生成动画。

  • scrollToPositionWithOffset
  • 平滑滚动到位置
  • 滚动到位置

最佳答案

我知道我回答这个问题有点晚了,但这可能对其他人有帮助。 尝试以下(至少我在使用时看不到任何动画):

Kotlin :

    //-- Immediately jump to the position in RecyclerView without delay or animation.
    mRecyclerView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            mRecyclerView.scrollToPosition(position)
            mRecyclerView.viewTreeObserver.removeOnGlobalLayoutListener(this)
        }
    })

Java:

mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            mRecyclerView.scrollToPosition(position);
            mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
});

关于android - RecyclerView 滚动到没有动画的所需位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117203/

相关文章:

android - 在 Android Native Activity 中使用 OpenCV2.3.1 的问题

android - horizo​​ntalscrollview 的 fillviewport 禁用滚动?

java - Webview 卡在加载网站或 cloudfare 检查

android - 收到欺诈性 Google Play 订单 ID

android - View 不会在 RelativeLayout 中正确对齐(Java 代码中设置的 View 宽度)

Android加载原生库

java - 从共享首选项中存储的数组列表中删除项目

java - 一维数组排队 - Java - 队列 - 二维数组

android - 有没有办法将 paddingEnd 和 paddingStart 与 minSdkVersion <17 一起使用?

android - Retrofit 2 如何处理有时无效有时非无效的服务器响应