您的位置:首页 > 其它

自定义控件 继承View 使用OnMeasure定义控件宽高

2015-12-21 12:30 323 查看
[code]protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(measureWH(widthMeasureSpec, 0), measureWH(heightMeasureSpec, 1));
    }


[code]setMeasuredDimension(width,height),该方法进行控件宽高设,


我们自定一个方法,measureWH(),该方法用于判断,根据布局文件中给该控件设定的参数,返回相应的宽高值。

[code]/**
     * 测量宽高
     * type=0 测量宽度, type=1 测量高度
     */
    private int measureWH(int measureSpec, int type){
        int model = MeasureSpec.getMode(measureSpec);//获得当前空间值的一个模式
        int size = MeasureSpec.getSize(measureSpec);//获得当前空间值的推荐值

        switch (model){
            case MeasureSpec.EXACTLY://当你的控件设置了一个精确的值或者为match_parent时, 为这种模式
                Log.d("xxx","EXACTLY");
                //size = (int) paint.measureText(labels[0]);
                return size;
            case MeasureSpec.AT_MOST://当你的控件设置为wrap_content时,为这种模式
                if(type == 0){
                    Log.d("xxx","AT_MOST");
                    //测量宽度
                    size = (int) paint.measureText(labels[0]);
                    return size;
                } else {
                    //测量高度
                    return size;
                }
            case MeasureSpec.UNSPECIFIED://尽可能的多
                break;
        }
        return 0;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: