Как вы оборачиваете текст DynamicLayout? - PullRequest
3 голосов
/ 27 ноября 2010

Привет! Я создаю Live Wallpaper, которая включает в себя текст, который рисуется непосредственно на холст через объекты TextPaint и DynamicLayout. В моем объекте DynamicLayout я установил ширину на ширину холста и теперь ищу способ обернуть текст, который выходит за пределы холста. Вот мой код настройки текста:

    //token is my large text string
    TextPaint tp = new TextPaint();
    Layout sl = new DynamicLayout(token, tp, (int) canvasWidth, Layout.Alignment.ALIGN_NORMAL, 0, 0, true);
    canvas.translate(startPositionX , startPositionY);
    sl.draw(canvas);

Как мне обернуть этот текст, если он выходит за пределы canvasWidth? Любая помощь приветствуется!

1 Ответ

0 голосов
/ 30 ноября 2010

Получил это через несколько часов ... глядя на StringTokenizer, находя самое длинное слово в моей строке и оборачивая оставшийся текст в эту ширину.

// Assume s contains a string of words
String longestWord = "";
StringTokenizer st = new StringTokenizer(s, " ,\t");
while (st.hasMoreTokens()) {
    String w = st.nextToken();
    if (w.length() > longestWord.length()) {
        longestWord = w;
    }
}

float textWidth = tp.measureText(longestWord+" ");
Layout sl = new DynamicLayout(token, tp, (int) textWidth, Layout.Alignment.ALIGN_CENTER, lineSpacing, 0, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...