单击时,RecyclerView项目的X和Y为0

时间:2016-05-13 21:35:22

标签: android android-recyclerview recycler-adapter

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));

感谢任何帮助。

2 个答案:

答案 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()