我的判刑很长。我应该使用除Label之外的其他小部件吗? 当我将Label的文本设置为一个非常大的句子时,标签的最大宽度之后的单词会被切断。
可能的hack是在要移动到String中下一行的位置手动添加“\ n”。但这不可能自动化这个过程。
此图片中的标签很长,其文字如下 -
“我在花园里。\ n我在花园里。我在花园里。”
如何将最后一个字自动移动到同一标签的第三行?
答案 0 :(得分:0)
您可以计算textview的宽度(仅textview.getWidth()
),通过此方法计算实际文本的宽度:
Paint p = new Paint();
p.measureText("your text here");
并比较一起,如果实际文字宽度大于textview宽度,请添加\n
。
<强>更新强> 在您的情况下,不是计算整个实际文本,而是逐个字符地计算,总结宽度并与textview宽度进行比较。
完成工作。希望这会有所帮助。
答案 1 :(得分:0)
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;
}