我有一个很长的句子。我应该使用标签以外的其他小部件吗?当我将标签的文本设置为一个非常大的句子时,标签最大宽度之后的单词会被切掉。
一个可能的技巧是在您想要移动到字符串中的下一行的位置手动添加“\n”。但这对于自动化这个过程是不可能的。
这张图片中的标签很长,其文字如下——
“我在花园里。\n 我在花园里。我在花园里。”
如何将最后一个单词自动移动到同一标签的第三行?
你可以计算你的文本视图的宽度(只是textview.getWidth()
),通过这种方法计算实际文本的宽度:
Paint p = new Paint();
p.measureText("your text here");
并一起比较,如果实际文本宽度大于 textview 宽度,则添加\n
.
更新: 在您的情况下,无需计算整个实际文本,只需逐个字符计算,总结宽度并与 textview 宽度进行比较。
任务完成。希望这可以帮助。
String insertNewlineChars(String textToDisplay, Float maxLabelWidth, BitmapFont font)
{
float textWidth=0;
ArrayList<String> words = new ArrayList<String>(Arrays.asList(textToDisplay.split(" ")));
String addWordsToSentence;
//add first word
String nextWord = words.get(0) ;
addWordsToSentence = nextWord + " ";
textWidth = font.getBounds(addWordsToSentence).width;
//add 2nd to last word
for(int i=1;i<words.size();i++)
{
nextWord = words.get(i);
textWidth += font.getBounds(nextWord).width;
//add word to a new line
if(textWidth > maxLabelWidth)
{
//push to next line
textWidth = font.getBounds(nextWord).width;
addWordsToSentence = addWordsToSentence.concat("\n" + nextWord + " ");
}
//add word to the same line
else
{
addWordsToSentence = addWordsToSentence.concat(nextWord + " ");
}
}
return addWordsToSentence;
}