2012-07-31 113 views
4

我有一个自定义视图,它在屏幕上绘制了几个不同的东西。每个人都有自己的绘画对象。除了文字以外,一切都很好。它在Gingerbread中运行得很好,但是ICS +没有文本。Android Canvas.drawText not rendering

这里是我的绘制方法:

protected void onDraw(Canvas canvas) 
{ 
    canvas.save(Canvas.MATRIX_SAVE_FLAG); 
    canvas.scale(getWidth(), getHeight()); 

    drawGrid(canvas); 
    drawHeader(canvas); 
    drawSelected(canvas); 
    drawDays(canvas); 
    drawToday(canvas); 

    canvas.restore(); 
} 

网格,选择和今天做工精细。标题和日期是文本绘图,它们不起作用。

这里是drawHeader方法:

private void drawHeader(Canvas canvas) 
{ 
    canvas.drawText("Sun", DAYS[0], .05f, paintDaysOfTheWeek); 
    canvas.drawText("Mon", DAYS[1], .05f, paintDaysOfTheWeek); 
    canvas.drawText("Tues", DAYS[2], .05f, paintDaysOfTheWeek); 
    canvas.drawText("Wed", DAYS[3], .05f, paintDaysOfTheWeek); 
    canvas.drawText("Thurs", DAYS[4], .05f, paintDaysOfTheWeek); 
    canvas.drawText("Fri", DAYS[5], .05f, paintDaysOfTheWeek); 
    canvas.drawText("Sat", DAYS[6], .05f, paintDaysOfTheWeek); 

    canvas.drawLine(.01f, .0f, .99f, .0f, paintMediumBlack); 
    canvas.drawLine(.01f, .07f, .99f, .07f, paintMediumBlack); 
} 

任何想法?

回答

3

我加入

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
    setLayerType(LAYER_TYPE_SOFTWARE, paint) 

到我的自定义视图固定的问题。不知道为什么我需要它,如果有人能解释它,那会很棒。

+0

你添加了哪行代码? – 2013-12-17 08:07:32

+2

这是我过去两天处理过的令人难以置信的令人沮丧的问题。将图层类型设置为软件也适用于我,但我不明白为什么!在onDraw - drawCircle中,drawRect工作,但drawPath和drawText没有!任何人解释? – autonomy 2014-01-28 20:30:06

1

启用硬件加速时,它有时会通过删除它认为不需要的绘图调用来进行优化。

例如,如果您在另一视图下有一个视图,它可以决定不呈现它,因为它是隐藏的,因此无需呈现它。