Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取X&;adnroid中recyclerView项目的Y坐标?_Java_Android_Android Recyclerview - Fatal编程技术网

Java 如何获取X&;adnroid中recyclerView项目的Y坐标?

Java 如何获取X&;adnroid中recyclerView项目的Y坐标?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我想获得recyclerview项目视图的X和Y坐标。我使用getLocationOnScreen()方法,但它对X和Y都返回0。 如何获取视图的X/Y 由于我是android开发新手,请帮助我:) 您的问题是因为项目的视图没有完全创建,getLocationOnScreen()method为X/Y返回0 通过在onBindViewHolder()中实现addOnGlobalLayoutListener()方法,可以实现所需的坐标 如下所示: @Override public void onBi

我想获得
recyclerview
项目视图的X和Y坐标。我使用
getLocationOnScreen()
方法,但它对X和Y都返回0。 如何获取视图的X/Y

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


您的问题是因为项目的视图没有完全创建,
getLocationOnScreen()
method为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]);
            }
        });
}

您的问题是因为项目的视图没有完全创建,
getLocationOnScreen()
method为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]);
            }
        });
}

你想实现什么?这是否回答了你的问题@ivan wooll我想他想得到在RecycleService中创建的视图的x/y坐标。你想实现什么?这是否回答了你的问题@ivan wooll我想他想得到在recyclerView中创建的视图的x/y坐标