我的视图持有者构造函数中有一个RecyclerView
我正在添加一个onGlobalLayoutListener,如下所示
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时,它不会触发开始出现在屏幕上的itemViews
。这是为什么?如何捕获这些项目的监听器?
答案 0 :(得分:11)
注册一个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
}
});