2010-11-27 36 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);