2012-11-29 1 views
1

스크롤보기가 있습니다. 사용자 정의보기에서 사용자 정의보기에 onMeasure를 덮어 씁니다. & onTouchEvent하지만 스크롤 할 때 아무것도 그려지지 않습니다.canvas.getHeight는 태블릿 장치의 view.getHeight와 같습니다.

protected final void onDraw(Canvas paramCanvas) 
    {  
    int text_width; 
    int yCanvas; 
    yCanvas = paramCanvas.getClipBounds().top; 
    int h = paramCanvas.getClipBounds().height() ; 
    int hView = this.getHeight() ; 
    int topView = this.getTop(); 
    paramCanvas.drawText("text...yCanvas :"+yCanvas + " --- hCanvas:"+h +"--- hView" + hView + " ----topView"+topView, 20, yCanvas+200, new Paint()); 

    } 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    boolean res = super.onTouchEvent(event); 
    postInvalidate(); 
    System.out.println("result: " + res); 
    return res; 
} 
@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
    int h = 1000; 
    setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), h);} 

흥미로운 것은()의 모든 정제에서 높이도 높이지만, 다른 장치에 동일한 canvas.heigh mycanvas이다 어이 디스플레이 exactullay 같다.

답변

0

귀하의 질문은 아마도 당신이 그려진 것을 보지 못했을 것입니다.

기본적으로 의미있는 값을 설정하지 않은 Paint 객체를 살펴볼 수 있습니다. 멤버 변수를 만들고 필요한 모든 속성 (색 등)을 설정할 수 있습니다. drawText (또는 다른 draw 메소드)를 호출 할 때마다 해당 객체를 다시 사용하십시오.

편집 : 페인트 개체가 문제가 아닌 경우; 구성중인 좌표를 다시 확인해야 할 수 있습니다. ScrollView을 사용 중입니다. 아마도 canvas.getClipBounds에 관한 것일 수 있습니다. 그냥 0,0에 텍스트를 그려 보는 것이 어떻습니까?

+0

이 매개 변수를 설정했지만 회신하지 않습니다. 다른 장치에서는 잘 작동하지만 태블릿에서는 작동하지 않습니다. ( –

+0

위치가 문제일까요? onMeasure에서 무엇을하고 있는지 (고정 된 '1000'은 의심스러워 보입니다). – Brian

+0

i 위치를 그립니다 0,0) 처음 텍스트를 그릴 때 처음 스크롤 할 때 작동하지 않습니다. 에뮬레이터와 다른 장치 (소니, samsung)에서 잘 작동하지만 삼성 태블릿 (P5100)을 실행하면 작동하지 않습니다. –