2012-03-12 26 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 2012-03-12 19:49:10

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 2012-03-12 19:45:29

+0

您是否尝试将位置0,0更改为另一个?我记得有问题,因为文本并不完全在那个位置。 我也建议你将Size设置为大。 – jsaye 2012-03-12 20:06:25

1

改变这一行:

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

到:

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