RecyclerView ItemView控件OnGlobalLayoutListener不火为itemViews

问题描述:

我有一个在其视图架的构造我加入一个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

注册一个这样的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