- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- // TODO Auto-generated method stub
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- int width = measureDimension(200, widthMeasureSpec);
- int height = measureDimension(200, heightMeasureSpec);
- setMeasuredDimension(width, height);
- }
- public int measureDimension(int defaultSize, int measureSpec){
- int result;
- int specMode = MeasureSpec.getMode(measureSpec);
- int specSize = MeasureSpec.getSize(measureSpec);
- if(specMode == MeasureSpec.EXACTLY){
- result = specSize;
- }else{
- result = defaultSize; //UNSPECIFIED
- if(specMode == MeasureSpec.AT_MOST){
- result = Math.min(result, specSize);
- }
- }
- return result;
- }
- UNSPECIFIED:父對子的大小沒有任何要求。
- EXACTLY: 父要求其子的大小指定爲某個確切的值。其子以及其他子孫都需要適應該大小。
- AT MOST:父要求其子的大小不能超過某個最大值,其子以及其他子孫的大小都需要小於這個值