今天在做一个AnimateLabel的自定义控件时,出现了一个很奇怪的问题,
重写的View在展示时,大小总是占整个父布局的大小,
虽然画出来的区域是正确的。
通过getLeft()和getTop()来获取View左上角的位置,以便于绘制view。
但是没有直接的像setWidth setHeight这样直观的函数来设置View 的大小。本以为直接把大小都设置成wrap_content的就可以解决问题了,但是发现显然是不成的。
解决办法就是:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(this.viewWidth,this.viewHeight);
}
看到这个解决办法我觉得自己好傻,怎么就没想到这个呢?看来还是对View的流程还不是很清楚。所以再这里复习下View 的创建流程:
onMeasure
onDraw
onLayout
请参照:http://www.tuicool.com/articles/iy2yMr