get width of textview in characters

android, layout

Solution

The answer would be to use the breakText() of your textView's Paint Object. Here is a Sample ,

int totalCharstoFit= textView.getPaint().breakText(fullString,  0, fullString.length(), 
 true, textView.getWidth(), null);

Now `totalCharstoFit` contains the exact characters that can be fit into one line. And now you can make a sub string of your full string and append it to the TextView like this,

String subString=fullString.substring(0,totalCharstoFit);
textView.append(substring);

And to calculate the remaining string, you can do this,

fullString=fullString.substring(subString.length(),fullString.length());

Now the full code,

Do this in a while loop,

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

}

Problem

I think this is the opposite of Set width of TextView in terms of characters I have a TextView where I'm showing some report data. I use a monospace TypefaceSpan for a portion of it because I want columns to line up. I used my test Android device to figure out how many columns I could fit, but the Android emulator seems to have exactly one less column, which makes things wrap in an ugly way in portrait mode. Is there a way to find out how many characters should fit on 1 line?

Original source

Related problems