您的位置:首页 > 移动开发 > Android开发

Android 自定义View 测量控件大小onMeasure中MeasureSpec作用

2017-03-17 15:41 495 查看
在自定义view中onMeasure 里面利用MeasureSpec来完成控件的测量是必不可免的

MeasureSpec中方法很少,其中只有getSize,getMode,makeMeasureSpec三个放法提供给我们调用

getSize 需要传入一个int类型的值,而这个值就有讲究了,它里面包含了具体的size数值和mode类型,所以我们一般就通过getSize这个方法来获取这个值里面的size大小

getMode 和getSize是一样的,getMode是用来获取这个值里面的mode模式,而这个mode有三

      

UNSPECIFIED 表示未指定大小模式
EXACTLY     表示指定了精确值模式
AT_MOST     表示容器最大模式

makeMeasureSpec 方法需要传入两个int类型的值,第一个就是Size,第二个就是Mode,而我们通过这个方法就是来构建我们上面getSize,getMode中传入的既包含Size又包含Mode的int类型的值的

用法

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//获取宽度的模式与具体大小
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
//获取高度的模式与具体大小
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
}


我们一般通过这种用法就可以知道我们在xml中设置的模式,与大小。然后就可以在onMeasure方法里面测量控件的整体大小了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: