Android 获取View宽高getViewTreeObserver().addOnGlobalLayoutListener()方法

846 阅读1分钟

安卓开发中经常会遇到想要获取View的宽高的情况。因为View组件布局要在onResume回调后完成。在oncreate中使用View.getWidth和View.getHeight无法获得一个view的高度和宽度。需要使用getViewTreeObserver().addOnGlobalLayoutListener()来获得宽度或者高度。这是获得一个view的宽度和高度的方法之一。记得不用的时候要把监听remove掉

int mHeaderViewHeight;

mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener(
    new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {                                                                                                                                                                         
            mHeaderViewHeight = mHeaderView.getHeight();

            //移除观察者
            getViewTreeObserver().removeGlobalOnLayoutListener(this);
        }
    });