java - 如何在android中获取recyclerView项目的X和Y坐标?

标签 java android android-recyclerview

我想获取 recyclerview 项目 View 的 X 和 Y 坐标。我用getLocationOnScreen()方法,但 X 和 Y 都返回 0。 如何获取 View 的 X/Y?

由于我是 Android 开发新手,请帮助我:)

@Override
public void onBindViewHolder(@NonNull final TaskViewHolder holder, final int position) {

    Model model = datalist_model.get(position);
    holder.tv_title.setText(model.getTitle());
    holder.tv_comment.setText(model.getComment());

    int[] screen = new int[2];
    holder.iv_status.getLocationOnScreen(screen);
    Log.d(TAG, "x :" + screen[0] + " , y : " + screen[1]);
}

最佳答案

您的问题是因为项目的 View 未完全创建,getLocationOnScreen() 方法对于 X/Y 都返回 0!

您可以通过在 onBindViewHolder() 中实现 addOnGlobalLayoutListener() 方法来实现您想要的坐标。

如下所示:

@Override
public void onBindViewHolder(@NonNull final TaskViewHolder holder, final int position) {
    Model model = datalist_model.get(position);
    holder.tv_title.setText(model.getTitle());
    holder.tv_comment.setText(model.getComment());
    holder.itemView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                //Remove the listener before proceeding
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
                    holder.itemView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                else
                    holder.itemView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                int[] screen = new int[2];
                holder.iv_status.getLocationOnScreen(screen);
                Log.d(TAG, "x :" + screen[0] + " , y : " + screen[1]);
            }
        });
}

关于java - 如何在android中获取recyclerView项目的X和Y坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60640366/

相关文章:

android - Recycler View 在它的主框架上做太多的工作

android - 以编程方式设置按钮颜色

android - 在 Android 应用程序中使用 JSON 和 REST 的最佳实践?

java - 如何使用下一个按钮在firebase中一一调用子节点

Java 8 流 API :How to handle null value in Map

android - 如何在 RecyclerView 上设置标题?

android - 防止 RecyclerView 中的直接邻居被分离和回收

java - 乔达日期时间到 Unix 日期时间

Java newInstance 在不应该抛出错误的地方抛出错误

java - Appium:如何遍历未知长度的 ListView ?