2016-05-13 31 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() 
相關問題