【问题标题】:Android Canvas.drawText not renderingAndroid Canvas.drawText 不呈现
【发布时间】:2012-07-29 10:31:09
【问题描述】:

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

这是我的绘制方法:

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();
}

Grid、Selected 和 Today 工作正常。 Header 和 Days 是文本绘制,它们不起作用。

这里是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);
}

有什么想法吗?

【问题讨论】:

    标签: android canvas custom-view drawtext


    【解决方案1】:

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

    例如,如果您在另一个 View 下方有一个 View,它可以决定不渲染它,假设它是隐藏的,因此不需要渲染它。

    【讨论】:

      【解决方案2】:

      我通过添加解决了这个问题

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

      到我的自定义视图。不知道我为什么需要它,如果有人能解释一下,那就太好了。

      【讨论】:

      • 这是我过去 2 天一直在处理的一个令人难以置信的令人沮丧的问题。将图层类型设置为软件也对我有用,但我不明白为什么!在 onDraw - drawCircle,drawRect 工作,但 drawPath 和 drawText 没有!有人解释一下吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多