我们如何知道视图是否已布局?

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();
    }
}