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

Android自定义控件之onMeasure

2017-04-01 10:09 260 查看

重写onMeasure方法的时候注意遵循系统的要求:

1.确保大于min值;

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(
getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
}


2.在onMeasure()中调用setMeasuredDimension(int, int) 来保存计算的宽高的结果,如果不加会报一下错误

java.lang.IllegalStateException: onMeasure() did not set the measured dimension by calling setMeasuredDimension()

getWidth/Height和getMeasuredWidth/Height的区别:

getWidth、getLeft是相对于父View的位置大小,而getMeasuredWidth、getMeasuredHeight是测量后该View的实际大小。

简单的解释就是:如果View的内容在父View内全部显示时,那么这时他们的值是相等的。当View的内容在父View内显示不下,并超出父View视图时,此时他们的值是不相等的。即

getMeasuredHeight()是View的实际大小,而getHeight是此时View在父View中显示的大小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐