2011-09-23 9 views
1

사용자 정의 진행률 막대를 그리는 사용자 정의보기 (안드로이드)가 있습니다. 진행률 표시 줄이 부모보기 (너비)를 채우도록합니다. 내가 가지고있는 문제는 어떻게 사용자 정의보기가 실제 한계를 얻을 수 있는지 모르겠습니다. 적절한 비율로 다른 색상을 표시하려면 너비 제한을 알아야합니다. 나는 다음과 같은 방법으로 된 onMeasure()를 구현했습니다 :캔버스에 그림을 그릴 때 부모를 채우는 방법

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
{ 
    setMeasuredDimension(widthMeasureSpec, 15); 
} 

그런 내의 onDraw()에서, 나는 getWidth()를 호출 할 때 내가 얻을 : 1073742246.이 어떻게 실제 부모의 경계를 알 수 있는가? 분명히 내가 여기서 뭔가 잘못 했어 ... 뷰 레이아웃 매개 변수는 MATCH_PARENT/FILL_PARENT로 설정되어 있고 전체 영역을 그릴 수 있지만 적절한 비율로 막대를 그리기 위해 실제 폭을 알지 못합니다.

감사

노암

답변

1

widthMeasureSpec 픽셀 단지 폭 이외의 정보를 포함한다. onMeasure가 너에게 너비가 422px이고 너비가 MeasureSpec.EXACTLY 인 것 같습니다.

MeasureSpec.getSize(widthMeasureSpec); 픽셀 단위로 실제 너비를 가져옵니다. 자세한 내용은 http://developer.android.com/reference/android/view/View.MeasureSpec.html

+0

그게 효과가있어 - 고마워! – nambar

+0

너희들은 amzaing ... 많이 고마워. – nambar

+0

그때 대답을 받아 들여야한다. –

2

이 값에는 필요한 너비가 포함되어 있지만 MeasureSpec 플래그도 포함되어 있습니다.

MeasureSpec을 사용하십시오. getSize() 플래그를 제거하십시오.

관련 문제