以字符获取textview的宽度

Dan*_*son 2 layout android

我认为这与TextView的字宽设置相反

我有一个TextView,我正在显示一些报告数据.我使用等宽字体TypefaceSpan作为其中的一部分,因为我想要列排列.

我使用我的测试Android设备来计算出我可以容纳多少列,但Android模拟器似乎只有少了一列,这使得事物在纵向模式下以难看的方式包裹.

有没有办法找出一行中应该有多少个字符?

And*_*lva 12

答案是使用textView的Paint对象的breakText().这是一个样本,

int totalCharstoFit= textView.getPaint().breakText(fullString,  0, fullString.length(), 
 true, textView.getWidth(), null);
Run Code Online (Sandbox Code Playgroud)

现在totalCharstoFit包含可以放入一行的确切字符.现在,您可以创建完整字符串的子字符串,并将其附加到TextView,如下所示,

String subString=fullString.substring(0,totalCharstoFit);
textView.append(substring);
Run Code Online (Sandbox Code Playgroud)

要计算剩余的字符串,你可以这样做,

fullString=fullString.substring(subString.length(),fullString.length());
Run Code Online (Sandbox Code Playgroud)

现在完整的代码,

在while循环中执行此操作,

while(fullstirng.length>0)
{
int totalCharstoFit= textView.getPaint().breakText(fullString,  0, fullString.length(), 
     true, textView.getWidth(), null);
 String subString=fullString.substring(0,totalCharstoFit);
    textView.append(substring);
 fullString=fullString.substring(subString.length(),fullString.length());

}
Run Code Online (Sandbox Code Playgroud)