2012-03-12 2 views
3

canvas.drawText() 메서드를 사용하는 데 문제가 있습니다. 다음과 같이사용자 지정보기에 텍스트를 그릴 수 없습니다.

나는, 사용자 지정보기가 있습니다

public class PagerIndicator extends View 
{ 
    @Override 
    public void onDraw(Canvas canvas) 
    {  
    Paint paint = new Paint(); 
    paint.setStyle(Paint.Style.FILL); 
    paint.setColor(Color.GRAY); 
    canvas.drawPaint(paint); 

    paint.setColor(Color.WHITE); 
    paint.setTextSize(10); 
    paint.setAntiAlias(true); 
    paint.setTextAlign(Align.LEFT); 
    canvas.drawText("TEST", 0, 0, paint); 
} 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<ysi.crm.PagerIndicator 
    android:id="@+id/swipe_page_indicator" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 

drawPaint() 메소드 내가 테스트 할 때 작업, 나는 회색 페인트를 볼 수 있습니다. 그러나 canvas.drawText()는 그리기가 아닙니다. 회색 위에 텍스트가 표시되지 않습니다.

저는이 문제를 이길 때까지이 문제를 가진 사람을 찾지 못했습니다. 솔루션은 훨씬 적습니다. 어떤 도움을 주셔서 고맙게 생각합니다.

답변

8

내가 전에이 다 퉜다. 그리기 위해 설정 한 좌표는 텍스트의 왼쪽 위 좌표가 아닙니다. 텍스트의 왼쪽 하단 좌표입니다.

이 때문에 텍스트가보기 상단에 그려져있을 가능성이 큽니다.

+0

그게 다야! 나는 그것을 잡지 못했다고 나는 믿을 수 없다. 왼쪽 하단을 원점으로 사용하는 것을 고의로 혼란스럽게 생각합니다. Android에 감사드립니다. 도와 주셔서 감사합니다 !! – bwiechart

1

이 시도 :

public class PagerIndicator extends View 
{ 
    @Override 
    public void onDraw(Canvas canvas) 
    {  
    Paint paint1 = new Paint(); 
    paint.setStyle(Paint.Style.FILL); 
    paint.setColor(Color.GRAY); 
    canvas.drawPaint(paint1); 

    Paint paint2 = new Paint(); 
    paint2.setColor(Color.WHITE); 
    paint2.setTextSize(10); 
    paint2.setAntiAlias(true); 
    paint.setTextAlign(Align.LEFT); 
    canvas.drawText("TEST", 0, 0, paint2); 
} 
+0

덕분에, 불행하게도 이것은 내가 이전에 아무 소용이 시도 것이었다. 방금 다시 시도했는데 여전히 텍스트가 표시되지 않습니다. – bwiechart

+0

0,0 위치를 다른 위치로 변경하려고 시도 했습니까? 나는 텍스트가 정확히 그 위치에 있지 않았기 때문에 문제가 있었던 것을 기억합니다. 크기를 크게 설정하는 것이 좋습니다. – jsaye

1

변경이 라인 :

canvas.drawText("TEST", 0, 0, paint2); 

에 : 귀하의 코멘트에 대한

canvas.drawText("TEST", 100, 100, paint2); 
관련 문제