问题:在自定义view时,如果直接继承view或者viewgroup的控件,如果不在onMeasure中对wrap_content做处理,
需要重写onMeasure方法,具体如下:
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSpecSize = MaeasureSpec.getSize(widthMeasureSpec);
int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSpecSize = MaeasureSpec.getSize(heightMeasureSpec);
if(widthSpecMode == MeasureSpec.AT_MOST && heightSpecMode == MeasureSpec.AT_MOST){
setMeasureedDimension(mWidth,mHeight);
}else if((widthSpecMode == MeasureSpec.AT_MOST){
setMeasureedDimension(mWidth,heihgtMeasuerSize);
}else if(heightSpecMode == MeasureSpec.AT_MOST){
setMeasureedDimension(widthMeasureSize, mHeihgt);
}
}
其中,mWidth,mHeight为我们给view指定的一个默认的内部宽、高。