我想获取 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/