Проблема с отображением Canvas.drawString в Android - PullRequest
1 голос
/ 07 июня 2010

Я сталкиваюсь с этой проблемой при отображении текста в SurfaceView, некоторые символы могут взбираться на другие, код здесь:

private static void fakeDraw(Canvas c)
{
    Paint mPaint = new Paint();
    int color = 0xff000000;
    mPaint.setColor(color);
    mPaint.setStrokeWidth(2);
    mPaint.setStyle(Style.FILL);
    mPaint.setAntiAlias(true);

    FontMetricsInt fm = mPaint.getFontMetricsInt();
    int fh = Math.abs(fm.top); 
    int left = 0;
    int top = 100;
    Rect smallClip = new Rect(left, top-fh, left + 200, top + 30);
    Rect bigClip = new Rect(0, 0, getW(), getH());
    c.drawRect(bigClip, mPaint);
    String text1 = "Evi";
    String text2 = ">>";
    String text3 = "Tom";

    color = 0xff303030;
    mPaint.setColor(color);
    c.drawRect(smallClip, mPaint);

    color = 0xffffffff;
    mPaint.setColor(color);
    c.drawText(text1, left, top, mPaint);

    Rect bounds = new Rect();
    mPaint.getTextBounds(text1, 0, text1.length(), bounds);

    left += bounds.width();
    c.drawText(text2, left, top, mPaint);

    left -= bounds.width();
    top += 12;
    c.drawText(text3, left, top, mPaint);
    mPaint.getTextBounds(text3, 0, text3.length(), bounds);
    left += bounds.width();
    c.drawText(text2, left, top, mPaint);
    }

В случае второго текста Tom >> все отображается правильно, но первый текст Evi >> нет. Проблема в том, что символы >> рисуют в пространстве рисования Эви (последний символ "я") !! Можно посмотреть, увеличил ли ты картинку, что я делаю не так и как это исправить?

Снимок экрана можно найти здесь: http://img192.imageshack.us/img192/2782/imagexs.png

Ответы [ 2 ]

0 голосов
/ 07 июня 2010

просто добавьте немного пробела вручную

c.drawText(text2, left + 2, top, mPaint);

или добавьте пробел ("") в начале текста2

0 голосов
/ 07 июня 2010

Хм, попробуйте указать конкретные х / у ко-орды? с числами, а не предварительно определенными строками? задайте «>>» различные координаты для его области рисования.

...