你如何包装DynamicLayout文本?

时间:2010-11-27 02:48:37

标签: android canvas android-layout

嘿那里 - 我正在创建一个动态壁纸,其中包含通过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 :(得分:0)

几个小时后得到这个......看着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);