我们如何知道视图是否已布局?
How could we know if the a view has been layout?
我正在使用以下方法获取视图顶部坐标
view.getTop();
这将return初始为0,在布局之后,它会根据marginTop()设置得到正确的坐标。
我的问题是,从视图中,我们如何知道视图是否已相应布局(例如 getTop return 正确的值)?
我的使用场景如下。我试图在 onScroll 期间获取视图坐标,但这将在视图第一次初始化时被调用,因此 getTop()
returns 0,这不是第一个正确的值时间。我想避免考虑这种情况......但只有在它具有适当的值时才启动 onScroll 侦听器。
myList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int top = view.getTop();
}
});
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout () {
int top = view.getTop();
}
}
我正在使用以下方法获取视图顶部坐标
view.getTop();
这将return初始为0,在布局之后,它会根据marginTop()设置得到正确的坐标。
我的问题是,从视图中,我们如何知道视图是否已相应布局(例如 getTop return 正确的值)?
我的使用场景如下。我试图在 onScroll 期间获取视图坐标,但这将在视图第一次初始化时被调用,因此 getTop()
returns 0,这不是第一个正确的值时间。我想避免考虑这种情况......但只有在它具有适当的值时才启动 onScroll 侦听器。
myList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int top = view.getTop();
}
});
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout () {
int top = view.getTop();
}
}