ViewPage 设置warp_content 高度无效的问题中关于onMeasure 度量孩子高度的问题

344 阅读1分钟

Viewpage 设置warp_content 无效 因为它先度量自己在度量子View

重写onMesure()方法 但是for循环中度量子View 需通过LayoutParams获取子View的真正高度

int height = 0
    for (int i = 0; i < getChildCount(); i++) {
        View child = getChildAt(i);
        ViewGroup.LayoutParams params = child.getLayoutParams();
        child.measure(widthMeasureSpec, 		
        getChildMeasureSpec(heightMeasureSpec, 0, height));

        int h = child.getMeasuredHeight();
        if (h > height)
            height = h;
    }
    heightMeasureSpec = MeasureSpec.MakeMeasureSpec(height, View.MeasureSpec.EXACTLY);
    super.onMeasure(widthMeasurSpec,heighMeasureSpec)
    
    //child.measure(widthMeasureSpec,   MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 这个是错的 会导致高度错误