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

Fel*_*aes 3 android recycler-adapter android-recyclerview

在a中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
            }
        });


    }
Run Code Online (Sandbox Code Playgroud)

事实是,X和Y都总是返回0,他们不应该.我需要点击项目的X和Y来做一些动画.

我已经尝试将X和Y位置放在一个内部和一个OnGlobalLayoutListener内部OnPreDrawListener(当你需要活动的onCreate上的X和Y时它们都工作),但它们也返回0.

我正在使用GridLayoutManager我的RecyclerView:

recyclerView.setLayoutManager(new GridLayoutManager(Activity_alfabeto.this, 7, LinearLayoutManager.VERTICAL, false));
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

Fel*_*aes 7

搞定了.我不得不使用这种方法:

int[] originalPos = new int[2];
view.getLocationInWindow(originalPos);
//originalPos[0] is my X
//originalPos[1] is my Y
Run Code Online (Sandbox Code Playgroud)

似乎getX和getY是相对于视图的父级,而不是它们在屏幕上的绝对位置.

    view.getLocationOnScreen(originalPos);
Run Code Online (Sandbox Code Playgroud)

也可以用.

  • 它仅在我不滚动回收器视图时才有效。当我滚动时 - 它给了我错误的坐标 (2认同)