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
。这是为什么?我如何捕获这些项目的听众?
答
注册一个这样的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
覆盖的'onLayout'你'itemView' – pskink