Canvas.drawText («+ 5») В Android нет символа «+»?

1

Я уверен, что это имеет какое-то отношение к необходимости использования символа побега или чего-то еще, но я не могу понять это. Когда я пытаюсь нарисовать +5 на моем холсте, знак + никогда не появляется - я вижу 5.

Кто-нибудь знает способ нарисовать на холсте специальные символы?

Спасибо!

Вот код, который компилируется, но не показывает "+":

    private void doDraw(Canvas canvas) {
       //other misc canvas.draw(...) calls

       canvas.drawText("+5", xPos, yPos, bonusScorePaint);
}

Очевидно,

canvas.drawText("\+5", xPos, yPos, bonusScorePaint);

не является допустимой escape-последовательностью, поэтому она не компилируется.

  • 0
    Можете ли вы опубликовать код, который вы используете, чтобы создать холст и нарисовать текст? Я написал пример приложения, и у меня не возникло проблем с отображением знака плюс.
  • 2
    Здесь все в порядке: если метод действительно рассматривает + как специальный символ, вам понадобятся две обратные косые черты, чтобы избежать его, так как одна обратная косая черта является escape-последовательностью Java и, конечно, Java не распознает \+ поэтому он освобождается. Попробуйте \\+ .
Теги:
canvas
escaping
character

4 ответа

1

Оказывается, это был мой TypeFace. Не знаю, почему, я использую пользовательский шрифт, но знак + существует в этом шрифте.

1

Вы ответили на свой вопрос. Да, вам нужно "\" перед "+".

  • 0
    Вы когда-нибудь пробовали это, потому что я не могу заставить его работать. canvas.drawText ("\ + 5", ...) не компилируется, и escape-символ перед другими символами не конвертирует их правильно. Т.е. canvas.drawText ("\ n5", ...) преобразуется в символ квадрата с 5 рядом с ним.
0

Как Конрад Рудольф сказал, попробуйте \\+

0

Вот код, который у меня есть:

ImageView img = (ImageView)findViewById(R.id.img);
Bitmap bmp = Bitmap.createBitmap(400, 400, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
Paint p = new Paint();
p.setColor(Color.WHITE);
c.drawText("+5", 20, 20, p);
img.setImageBitmap(bmp);

Мои единственные мысли в том, что это может быть цвет вашего объекта краски или положение объекта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню