滚动到嵌套 Recyclerview 中的子 Recyclerview 项目

问题描述 投票:0回答:1

背景

我有一个嵌套的 Recyclerview,如下图所示:

Sketch of my nested Recyclerview

在图中,您可以看到一个 RecyclerView,其中每个 RecyclerView 作为项目保存一个。

问题

我现在的问题是:如何让外部父 Recyclerview 滚动到子 RecyclerView 之一的位置。在图中,我将 Content pos 5 标记为我的目标位置,例如 Child RecyclerView 2。

我已经发现了什么

我一直在考虑的一种方法是在父 RecyclerView 上使用

scrollToPositionWithOffset(position, offset)
,然后滚动到子 RecyclerView 2 的位置,然后将偏移量作为子 RecyclerView 中项目列表的大小。但是当视图甚至没有膨胀时我怎样才能获得尺寸呢?

如果你们中的一个人能给我一些帮助,我会非常高兴,因为我也遇到了在这样的嵌套 Recyclerview 中滚动到子 RecyclerView 的位置的问题。

android kotlin android-recyclerview
1个回答
0
投票

我有同样的问题,我计算总滚动长度,包括节标题(固定高度)和子回收视图的项目,你可能会问“当视图甚至没有膨胀或绘制时如何获得尺寸?” 。您可以使用 view.measure() 来获取内容项的测量高度:

int widthMeasureMode = View.MeasureSpec.makeMeasureSpec(getResources().getDisplayMetrics().widthPixels, View.MeasureSpec.EXACTLY);
int heightMeasureMode = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
contentView.measure(widthMeasureMode, heightMeasureMode);
int measureHeight = contentView.getMeasureHeight();

需要滚动距离:考虑所有单个项目的测量高度,并加上所有节标题(位置在要滚动的内容之前)的高度。

例如,您需要滚动到第二个部分,并使该部分的第二个子内容视图滚动到屏幕顶部,假设第一个部分有6个内容视图,则总滚动距离为: 2 个部分的高度加上 7 个项目内容的高度。

recycleView.scrollBy(0, needToScrollDistance);

© www.soinside.com 2019 - 2024. All rights reserved.