记录Android开发中测量view宽高的几种方法

public class ViewMeasureUtil {
    private ViewMeasureUtil() {
    }

    //在Activity的onCreate()方法中获取view的尺寸
    public static void measureSize(View view, ViewTreeObserver.OnGlobalLayoutListener listener) {
    ViewTreeObserver observer = view.getViewTreeObserver();
    observer.addOnGlobalLayoutListener(listener);
    }

    //自定义控件,重写onMeasure()方法
    public static int measureWidth(int measureSpec, int defaultWidth) {
        return measure(measureSpec, defaultWidth);
    }

    //自定义控件,重写onMeasure()方法
    public static int measureHeight(int measureSpec, int defaultHeight) {
        return measure(measureSpec, defaultHeight);
    }

    private static int measure(int measuerSpec, int defaultSize) {
        int result;
        int specMode = View.MeasureSpec.getMode(measuerSpec);
        int specSize = View.MeasureSpec.getSize(measuerSpec);

        if (specMode == View.MeasureSpec.EXACTLY) {
            result = specSize;
        } else {
            result = defaultSize;
            if (specMode == View.MeasureSpec.AT_MOST) {
                result = Math.min(result, specSize);
            }
        }
        return result;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容