Android Canvas.drawText не рендеринг

У меня есть пользовательский вид, который рисует несколько разных вещей на экране. У каждого есть свой объект рисования. Все отлично рисует, кроме текста. В 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();
}

Сетка, Выбранные, и Сегодня работают нормально. Заголовок и Дни являются текстовым рисунком, и они не работают.

Вот метод 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);
}

Есть идеи?

2 ответа

Решение

Я исправил проблему, добавив

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

на мой пользовательский вид. Не уверен, зачем мне это было нужно, и если бы кто-нибудь мог это объяснить, это было бы здорово.

Когда аппаратное ускорение включено, оно иногда вносит изменения, удаляя вызовы рисования, которые, по его мнению, не нужны.

Например, если у вас есть представление под другим представлением, он может решить не отображать его, если он скрыт, поэтому нет необходимости его отображать.

Другие вопросы по тегам