我们怎么知道一个视图是否已经布局?

时间:2016-12-12 01:59:24

标签: android android-view

我使用以下

获取视图顶部坐标
view.getTop();

这将最初返回0,并且在布局之后,它将根据marginTop()设置得到正确的坐标。

我的问题,从视图来看,我们怎么能知道视图是否相应布局(例如getTop返回正确的值)?

我的使用场景如下。我试图在onScroll期间获取视图坐标,但这将在视图初始化时首次调用,因此getTop()返回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();
        }
    });

1 个答案:

答案 0 :(得分:2)

ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override 
    public void onGlobalLayout () {
        int top = view.getTop();
    }
}