重写ViewPager实现Scrollview嵌套ViewPager高度自适应

来源:互联网 发布:网络购物卡 编辑:程序博客网 时间:2024/05/20 00:13
public class MyViewPager extends ViewPager {    public MyViewPager(Context context) {        super(context);    }    /**     * Constructor     *     * @param context the context     * @param attrs the attribute set     */    public MyViewPager(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int height = 0;        for(int i = 0; i < getChildCount(); i++) {            View child = getChildAt(i);            child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));            int h = child.getMeasuredHeight();            if(h > height) height = h;        }        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);        super.onMeasure(widthMeasureSpec, heightMeasureSpec);    }    /**     * Determines the height of this view     *     * @param measureSpec A measureSpec packed into an int     * @param view the base view with already measured height     *     * @return The height of the view, honoring constraints from measureSpec     */    private int measureHeight(int measureSpec, View view) {        int result = 0;        int specMode = MeasureSpec.getMode(measureSpec);        int specSize = MeasureSpec.getSize(measureSpec);        if (specMode == MeasureSpec.EXACTLY) {            result = specSize;        } else {            // set the height from the base view if available            if (view != null) {                result = view.getMeasuredHeight();            }            if (specMode == MeasureSpec.AT_MOST) {                result = Math.min(result, specSize);            }        }        return result;    }}

0 1
原创粉丝点击