используйте graphics.drawText (String, x, y), чтобы нарисовать строку в несколько строк - PullRequest
1 голос
/ 27 октября 2011

Я создаю пользовательское поле, представляющее изображение и метку рядом с ним.Я рисую изображение с помощью graphics.drawBitmap(...)

Nw для текста, я использую graphics.drawText(String, x, y);, но если текст больше, чем дисплей, он не возвращается к строке.Я пытался добавить \n, но это не решило проблему.

Как нарисовать текст, который может быть расширен на несколько строк?

Спасибо,

Ответы [ 3 ]

3 голосов
/ 27 октября 2011

Я нашел решение проблемы. Вы можете найти его ниже для тех, кто интересуется этим вопросом:

public void drawMultipleLines(Graphics graphics, String text, int X, int Y, int XavailableSpace) {
    String[] texts = UiSpliter.split(text, " "); //UiSpliter is a class that will split the string into string array based on the ' ' character
    int x = X;
    int y = Y;
    for (int i = 0 ; i < texts.length ; i ++) {
        if (x + getFont().getAdvance(texts[i]) - X > XavailableSpace) {
            if (!(x == X)) {
                x = X;
                y = y + getFont().getHeight();
            }
        }
        graphics.drawText(texts[i] + " ", x, y);
        x += getFont().getAdvance(texts[i] + " ");
    }
}
1 голос
/ 27 октября 2011

Поскольку этот ответ говорит:

Метод drawString не обрабатывает новые строки, также drawText

ВыВам придется разделить строку на символы новой строки самостоятельно и нарисовать линии одну за другой с правильным вертикальным смещением. Подробности см. в ответе.

0 голосов
/ 27 октября 2011

Вы можете использовать классы AttributedCharacterIterator, TextLayout и LineBreakMeasurer, как описано в этом Java Tutorial .

...