当前位置: 首页 > 知识库问答 >
问题:

如何使用RecyCL View.scrollToPosition()将位置移动到当前视图的顶部?

汤才捷
2023-03-14

RecyclerView。scrollToPosition()非常奇怪。例如,假设一个名为“rv”的RecyclerView

>

  • 如果现在项目10位于当前的RecyclerView下,请调用rv。滚动位置(10),回收视图将项目10滚动到底部。

    如果现在项目10位于当前的RecyclerView中,请调用rv。scrollToPosition(10),不会进行任何滚动,不会执行任何操作。

    如果现在项目10位于当前RecyclerView的顶部,请调用rv。滚动位置(10),回收视图将滚动项目10至顶部。

    但我需要的是,无论何时调用它,RecyclerView都会将假定的位置滚动到当前视图的顶部,就像案例3一样。怎么做?

  • 共有3个答案

    魏浩广
    2023-03-14

    如果你想滚动到一个特定的位置,并且该位置是适配器的位置,那么你可以使用StaggeredGridLayoutManagerscrollToPosition

       StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
       staggeredGridLayoutManager.scrollToPosition(10);
       recyclerView.setLayoutManager(staggeredGridLayoutManager);
    
    姬昊焱
    2023-03-14

    下面的链接可能会解决您的问题:

    https://stackoverflow.com/a/43505830/4849554

    只需创建一个带有首选项SNAP_TO_START的平滑滚动条:

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

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

    smoothScroller.setTargetPosition(position);
    

    然后将平滑滚动条传递给LayoutManager:

    layoutManager.startSmoothScroll(smoothScroller);
    
    葛海阳
    2023-03-14

    如果我理解了这个问题,您希望滚动到一个特定的位置,但该位置是适配器的位置,而不是RecycorView的项位置。

    您只能通过LayoutManager来实现这一点。

    做一些类似于:

    rv.getLayoutManager().scrollToPosition(youPositionInTheAdapter).
    
     类似资料:
    • 问题内容: 我有一个这样的引导页面: 好像: 因此,如果我在移动设备上查看它,则列A位于顶部,但我希望列B位于顶部。这可能吗?我尝试过推拉,但没有成功。 问题答案: 使用列排序来完成此操作。 将在“ md”或更大的视口上将列“推”到右侧6,并在“ md”上将列“推” 到左侧。在任何较小的视口上,列将再次保持正常顺序。 我认为让人们失望的 是,您必须在HTML中将B置于A之上。可能有不同的方法可以使

    • 我有一个包含文本视图的回收器视图。文本视图的数量可以变化,它们的大小也可以变化,并且可以动态更改。 当用户滚动到列表中的某个位置并退出应用程序时,我希望能够在下一个会话中返回到该确切位置。 为此,我需要知道从视图中当前TextView开始的地方已经滚动了多少像素,以及滚动的当前位置。例如,如果用户看到第三个TextView,并从该TextView开始的地方向下滚动100个像素,我将能够使用scro

    • 我正在使用PDFBox以Java生成报告。我的要求之一是创建一个PDF文档,在页面顶部包含公司徽标。我无法找到实现这一目标的方法。 我在Java类中有以下方法: 图像当前出现在PDF的底部。我知道我需要修改的行是但是我需要指定什么坐标才能出现在页面顶部?

    • 我正在尝试移动一个HTML图像(一个黑色标记)到我点击屏幕上的地图的地方。地图有一个onclick功能,它使标记可见,并移动到用户点击的地方。然而,目前这只适用于我正在使用的屏幕大小,每当改变窗口大小时,图像就会在每个轴上偏离几百像素。 目前,我将点击的坐标存储在数组中,并使用DOM style.left/top来更改位置,使用这些坐标加上一组对我有效的像素,而不是任何其他屏幕。我想有一种方法,让

    • 我有一个自定义布局,如下所示。它有三个标签。 标签2是可选的。它并不存在于每个细胞中。因此,我想隐藏它,并将标签1向下移动一点,以便在发生这种情况时与标签3居中对齐。 以下是我为每个标签添加的约束。 标签1 标签 2 标签3 请注意,我添加了一个额外的约束,将中心与Y对齐,值为0的标签为1,并将其优先级设置为750。我想,如果我去掉标签2,优先级较低的约束将取代它的位置并下移。 但它似乎不起作用。

    • 问题内容: 在此之前,我的滚动视图下面几乎有一个值得滚动的页面,下面有一个列表视图,但是一旦填充了列表视图,滚动视图就会移到列表视图的顶部。我该如何解决/防止这种情况发生? 滚动查看XML: 我试着做sv.fullScroll(ScrollView.FOCUS_UP); 和所有这些东西到我的scrollview,但它不起作用 问题答案: 首先,您可能已经听说过它,但以防万一: 切勿在内部放一个,因