在 RecyclerView
中,我试图获取被点击项目的 X 和 Y 位置。
这是我的适配器内部:
@Override
public void onBindViewHolder(AlfabetoViewHolder holder, final int position) {
// setImage(holder.imageButton, images.get(position));
holder.imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.getX(); // This is 0, but it shouldn't be!
view.getY(); // This is also 0.
executaSomAnimacaoLetra(sounds.get(position), Utils.getResourceFromFile(popups.get(position), context), view); // I do some stuff here
}
});
}
事实是,X 和 Y 总是返回 0,而且它们不应该返回。我需要点击项目的 X 和 Y 来做一些动画。
我已经尝试在 OnGlobalLayoutListener
和 OnPreDrawListener
内部获取 X 和 Y 位置(当您在 Activity 的 onCreate 上需要 X 和 Y 时,两者都有效) , 但它们也返回 0。
我在我的 RecyclerView
上使用 GridLayoutManager
:
recyclerView.setLayoutManager(new GridLayoutManager(Activity_alfabeto.this, 7, LinearLayoutManager.VERTICAL, false));
感谢任何帮助。
最佳答案
开始工作了。我不得不使用这种方法:
int[] originalPos = new int[2];
view.getLocationInWindow(originalPos);
//originalPos[0] is my X
//originalPos[1] is my Y
这里的 getX 和 getY 是相对于 View 的父 View ,而不是它们在屏幕上的绝对位置。
view.getLocationOnScreen(originalPos);
也可以使用。
关于android - 单击时 RecyclerView 项目的 X 和 Y 为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219677/