我想知道如何获取 RecyclerView 中第 n 个项目的 X 或 Y 位置。如果项目当前在可见范围内,这很容易做到。但是,当 View 当前不在屏幕上时(例如,RecyclerView 上的当前可见项目范围是 4 到 7,而我感兴趣的项目是 1 或 10),似乎无法获得值(value)。
这是我尝试过的。我有以下三个字段:
private RecyclerView rv;
/* The Layout Manager of rv */
private LinearLayoutManager llm;
/* The data to be shown in the RecyclerView. */
private String[] data = {"0","1","2",...,"9"};
我在屏幕上显示了项目“2”到“5”,我想获取当前不在屏幕上的项目“9”的 X/Y 位置。所以我尝试了以下方法:
int index = 9;
View v = rv.getChildAt(index);
View v2 = llm.getChildAt(index);
不幸的是,v
和v2
都是空的。原因似乎是当 data
的大小为 10 时,rv
和 llm
的 childCount 是当前的 View 数在屏幕上可见,如下所示:
int count = rv.getChildCount();
int count2 = llm.getChildCount();
两个变量都是 4(当前可见的 View 数;即“2”到“5”)。由于 recyclerView 的大小为 4,而我想查找索引 9 处的项目,因此上面返回了 null。
最佳答案
我使用以下方法获得了回收站 View 中每个项目的完美 x
和 y
:
int[] originalPos = new int[2];
view.getLocationInWindow(originalPos);
//or view.getLocationOnScreen(originalPos)
int x = originalPos[0];
int y = originalPos[1];
关于android - 获取 RecyclerView 中第 n 个项目的 x/y 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38004369/