2010-11-27 7 views
3

こんにちは私は、TextPaintとDynamicLayoutオブジェクトを介してキャンバスに直接描画されるテキストを含むライブ壁紙を作成しています。私の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を超えてこのテキストをラップするにはどうすればよいですか?どんな助けもありがとう!

答えて

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);