2015-10-15 20 views
9

我有一個在其視圖架的構造我加入一個onGlobalLayoutListener如下RecyclerView ItemView控件OnGlobalLayoutListener不火爲itemViews

public CustomViewHolder(final View itemView, Context context) { 
    super(itemView, context); 
    itemView.getViewTreeObserver().addOnGlobalLayoutListener(
     new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
      // Get height here 
      } 
    }); 
} 

該火災對所有itemViews是在屏幕上可見RecyclerView,但當我滾動recyclerView時,它不會觸發屏幕上顯示的itemViews。這是爲什麼?我如何捕獲這些項目的聽衆?

+0

覆蓋的'onLayout'你'itemView' – pskink

回答

8

註冊一個這樣的OnLayoutChangeListener:

imageViewAvatar.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 

@Override 
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 
     imageViewAvatar.removeOnLayoutChangeListener(this); 
     // Get height here 
} 
}); 
+3

給我原因,我應該用這個代替ViewTreeObserver'的',請。 – deadfish

相關問題