как подогнать ширину текста в android canvas? - PullRequest
0 голосов
/ 23 февраля 2012

Привет, мое приложение - рисовать текст на холсте, проблема в порядке. Мой текст большой, выходит за пределы холста.

например, текст = "как дела" правильно вписывается в canvas.but, а текст = "привет, как дела" Как длина текста. Он выходит за пределы холста. Любой, пожалуйста, помогите мне. Заранее спасибо!

        canvas1.drawColor(Color.BLACK);
        canvas1.drawBitmap(resizeImage1,10,5, null);
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);
        paint.setTextSize(25);
        paint.setColor(Color.BLUE);
        paint.setFakeBoldText(true);
        paint.setTextSize(30);
        canvas1.drawText(mytext, 10,175, paint);

Ответы [ 3 ]

1 голос
/ 30 июля 2015

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

    Rect bounds = new Rect(x1, y1, x2, y2);// set the bounds
    String textOnCanvas = "text to be wriiten";
    StaticLayout sl = new StaticLayout(textOnCanvas, textPaint,
            bounds.width(), Layout.Alignment.ALIGN_CENTER, 1, 1, true);
    canvas.save();
    float textHeight = getTextHeight(textOnCanvas, textPaint);
    int numberOfTextLines = sl.getLineCount();
    float textYCoordinate = bounds.exactCenterY() -
            ((numberOfTextLines * textHeight) / 2);

    //text will be drawn from left
    float textXCoordinate = bounds.left;
    canvas.translate(textXCoordinate, textYCoordinate);
    //draws static layout on canvas
    sl.draw(canvas);
    canvas.restore();
0 голосов
/ 23 февраля 2012

Очень вероятно, что вы превышаете ширину растрового изображения.

С каждым холстом связан растровое изображение, ширина растрового изображения может быть меньше ширины текста.

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

Попробуйте увеличить размер растрового изображения.

0 голосов
/ 23 февраля 2012
int IMAGE_WIDTH = text.length();

canvas1.drawBitmap (resizeImage1, IMAGE_WIDTH, 5, null);

...