问题
在自定义一个类似锁屏页面时间日期样式的控件,继承 View 的时候,发现在 xml 中使用 wrap_content 属性相当于使用了 match_parent 属性。
原因分析
进入View的源码,可以看到 onMeasure 的方法中
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
}
其中看看 getDefaultSize
方法,在没有重写 onMeasure 的时候,走如下逻辑
/**
参数 size :提供的是默认大小
参数 measureSpec :提供的是测量规格(测量模式&测量大小)
*/
public static int getDefaultSize(int size, int measureSpec) {
int result = size;
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
switch (specMode) {
case MeasureSpec.UNSPECIFIED: //自定义控件的时候用的比较少
result