android - RecyclerView - 如何平滑滚动到某个位置的项目顶部?

标签 android scroll position android-recyclerview smoothing

在 RecyclerView 上,我可以使用以下命令突然滚动到所选项目的顶部:

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

但是,这突然将项目移动到顶部位置。我想顺利移动到项目的顶部。

我也试过了:

recyclerView.smoothScrollToPosition(position);

但它不能很好地工作,因为它不会将项目移动到顶部选择的位置。它只是滚动列表,直到该位置上的项目可见。

最佳答案

RecyclerView 被设计为可扩展的,因此无需为了执行滚动而将 LayoutManager (如 droidev suggested )子类化。

相反,只需使用首选项 SNAP_TO_START 创建一个 SmoothScroller:

RecyclerView.SmoothScroller smoothScroller = new LinearSmoothScroller(context) {
  @Override protected int getVerticalSnapPreference() {
    return LinearSmoothScroller.SNAP_TO_START;
  }
};

现在您设置要滚动到的位置:

smoothScroller.setTargetPosition(position);

并将 SmoothScroller 传递给 LayoutManager:

layoutManager.startSmoothScroll(smoothScroller);

关于android - RecyclerView - 如何平滑滚动到某个位置的项目顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235183/

相关文章:

java - 如何在android中的另一个按钮中启用基于onclick的按钮?

android - 有没有一种简单的方法可以在 Android 手机上安装应用程序的测试版本和发布版本?

android - Kotlin/Android Studio错误:必需可编辑!找到了字符串?

android - 滚动时的 ListView 填充

选择 Spinner 时,Android Scrollview 更改位置(向下滚动)

SQL - 如何确定我选择的记录在哪个位置/订单/计数?

css - 为什么我的固定div出现在IE8的内容下面?

android - 来自支持库与设计库的抽屉导航

javascript - 前置滚动问题

我可以以编程方式设置 Windows 控制台位置吗?