내 사용자 지정보기 MeasureSpec
이 때를 이 정확히는 사양 크기를 설정하면, 뷰 높이를 선택할 때 슬라이더, 그것은 onMeasure()
에 대한 규칙을 따르는 것입니다 UNSPECIFIEDAT_MOST 일 때 정의 된 크기를 사용하도록 설정합니다. 나는 다음 뷰가 그려집니다 AT_MOST에 대한 주석 행의 주석을 해제하면사용자 정의보기 레이아웃 된 onMeasure()는 최소 크기의 AT_MOST을 선택하는 경우 그려지지 않습니다
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int specHeight = Math.max(BOX_MIN_HEIGHT, MeasureSpec.getSize(heightMeasureSpec));
int specWidth = MeasureSpec.getSize(widthMeasureSpec);
int desiredHeight = Math.max(BOX_MIN_HEIGHT, HSVColorPickerPreference.this.boxHeight);
int chosenHeight = 0;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if(heightMode == MeasureSpec.UNSPECIFIED) {
chosenHeight = desiredHeight;
} else if(heightMode == MeasureSpec.AT_MOST) {
chosenHeight = Math.min(specHeight, desiredHeight); <<< BAD results
//chosenHeight = specHeight; <<< GOOD results
} else if(heightMode == MeasureSpec.EXACTLY) {
chosenHeight = specHeight;
}
setMeasuredDimension(specWidth, chosenHeight);
하지만이 모든 그려 할 수있는 뷰를 발생
(onDraw()
가 호출되지 않습니다).
슬라이더는 2 개의 슬라이더와 하나의 뷰 상자가 포함 된 LinearLayout의 일부이며 각 슬라이더에는 layout_weight="1"
속성이 있습니다 (아래 이미지 참조).
GOOD :
BAD :
은 (두 개의 슬라이더와 그 아래 1 개보기가 있습니다)
좋은 기록 (마지막 줄을 보시려면 onDraw()
으로 전화하십시오) :
03-26 08:06:10.288: D/AlphaSlider(9223): + onSizeChanged(w:579, h:58, oldw:0, oldh:0)
03-26 08:06:10.288: D/AlphaSlider(9223): + onLayout(changed:true, left:10, top:10, right:589, bottom:68)
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073742185)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=361, desiredSise=40, chosenSize=361
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:-2147483080)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=568, desiredSise=40, chosenSize=568
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073742000)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=176, desiredSise=40, chosenSize=176
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073742098)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=274, desiredSise=40, chosenSize=274
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:-2147483342)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=306, desiredSise=40, chosenSize=306
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073741913)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=89, desiredSise=40, chosenSize=89
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073742098)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=274, desiredSise=40, chosenSize=274
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:-2147483342)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=306, desiredSise=40, chosenSize=306
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073741913)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=89, desiredSise=40, chosenSize=89
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742185)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=361, desiredSise=40, chosenSize=361
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483123)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=525, desiredSise=40, chosenSize=525
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741986)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=162, desiredSise=40, chosenSize=162
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742098)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=274, desiredSise=40, chosenSize=274
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483385)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=263, desiredSise=40, chosenSize=263
03-26 08:06:10.288: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741898)
03-26 08:06:10.288: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=74, desiredSise=40, chosenSize=74
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742169)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=345, desiredSise=40, chosenSize=345
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483173)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=475, desiredSise=40, chosenSize=475
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741969)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=145, desiredSise=40, chosenSize=145
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742081)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=257, desiredSise=40, chosenSize=257
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483435)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=213, desiredSise=40, chosenSize=213
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741882)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=58, desiredSise=40, chosenSize=58
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742081)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=257, desiredSise=40, chosenSize=257
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483435)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec AT_MOST, specSize=213, desiredSise=40, chosenSize=213
03-26 08:06:10.315: D/AlphaSlider(9223): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741882)
03-26 08:06:10.315: W/AlphaSlider(9223): MeasureSpec EXACTLY, specSize=58, desiredSise=40, chosenSize=58
03-26 08:06:10.315: D/AlphaSlider(9223): + onLayout(changed:false, left:10, top:10, right:589, bottom:68)
03-26 08:06:10.323: D/AlphaSlider(9223): + onDraw()
BAD 로그 (onDraw()
없이 전화) :
03-26 07:43:33.453: D/AlphaSlider(8145): + onSizeChanged(w:579, h:30, oldw:0, oldh:0)
03-26 07:43:33.463: D/AlphaSlider(8145): + onLayout(changed:true, left:10, top:10,right:589,bottom:40)
03-26 07:43:33.463: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073742185)
03-26 07:43:33.463: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=361, desiredSise=40, chosenSize=361
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:-2147483080)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=568, desiredSise=40, chosenSize=40
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073741824)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073742098)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=274, desiredSise=40, chosenSize=274
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:-2147483342)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=306, desiredSise=40, chosenSize=40
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073741824)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073742098)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=274, desiredSise=40, chosenSize=274
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:-2147483342)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=306, desiredSise=40, chosenSize=40
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742360, heightMeasureSpec:1073741824)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742185)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=361, desiredSise=40, chosenSize=361
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483123)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=525, desiredSise=40, chosenSize=40
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741824)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742098)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=274, desiredSise=40, chosenSize=274
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483385)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=263, desiredSise=40, chosenSize=40
03-26 07:43:33.473: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741824)
03-26 07:43:33.473: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742169)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=345, desiredSise=40, chosenSize=345
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483173)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=475, desiredSise=40, chosenSize=40
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741824)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742081)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=257, desiredSise=40, chosenSize=257
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483435)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=213, desiredSise=40, chosenSize=40
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741824)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073742081)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=257, desiredSise=40, chosenSize=257
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:-2147483435)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec AT_MOST, specSize=213, desiredSise=40, chosenSize=40
03-26 07:43:33.503: D/AlphaSlider(8145): + onMeasure(widthMeasureSpec:1073742403, heightMeasureSpec:1073741824)
03-26 07:43:33.503: W/AlphaSlider(8145): MeasureSpec EXACTLY, specSize=30, desiredSise=40, chosenSize=30
03-26 07:43:33.503: D/AlphaSlider(8145): + onLayout(changed:false, left:10, top:10, right:589, bottom:40)