2016-05-13 86 views
3

RecyclerView中,我试图获取点击项目的X和Y位置。 这是我的转接器内:RecyclerView项目的X和Y在点击时为0

@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的Ÿ总是返回0,他们不应该。我需要点击项目的X和Y来做一些动画。

我已经尝试过让X和Y位置的OnGlobalLayoutListener的内部和内部的OnPreDrawListener的(包括工作时,你需要在活动的onCreate X和Y),但他们也返回0。

我M于我RecyclerView使用GridLayoutManager

recyclerView.setLayoutManager(new GridLayoutManager(Activity_alfabeto.this, 7, LinearLayoutManager.VERTICAL, false)); 

任何帮助表示赞赏。

+0

不知道,但对于一个小螺纹在rootview为:'view.post(新的Runnable(){... view.getX();观.getY();});'让UI显示,你试过了吗? – Fllo

+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

仅当我不滚动回收站视图时才起作用。当我滚动 - 它给了我错误的坐标 – tieorange

+0

@tieorange你可能要考虑已经完成的RecyclerView的滚动量。现在看不到它,但值得一试! –

+0

@ FelipeRibeiroR.Magalhaes非常感谢 – thanhbinh84

-1

以下为我工作:

view.getRawX() 
view.getRawY() 
相关问题