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)
на мой пользовательский вид. Не уверен, зачем мне это было нужно, и если бы кто-нибудь мог это объяснить, это было бы здорово.
Когда аппаратное ускорение включено, оно иногда вносит изменения, удаляя вызовы рисования, которые, по его мнению, не нужны.
Например, если у вас есть представление под другим представлением, он может решить не отображать его, если он скрыт, поэтому нет необходимости его отображать.