在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位置(当你需要在活动上创建X和Y时,它们都可以工作),但是他们也会返回0。
我使用GridLayoutManager
上的RecyclerView
:
recyclerView.setLayoutManager(new GridLayoutManager(Activity_alfabeto.this, 7, LinearLayoutManager.VERTICAL, false));
感谢任何帮助。
答案 0 :(得分:6)
搞定了。我不得不使用这种方法:
int[] originalPos = new int[2];
view.getLocationInWindow(originalPos);
//originalPos[0] is my X
//originalPos[1] is my Y
似乎getX和getY是相对于视图的父级,而不是它们在屏幕上的绝对位置。
view.getLocationOnScreen(originalPos);
也可以使用。
答案 1 :(得分:-1)
以下对我有用:
view.getRawX()
view.getRawY()