вот мой код, логика в том, что я получаю ширину экрана, я получаю ширину символа, я делю ширину на размер символа и, когда длина строки шире ширины экрана, я добавляю ее в массив, содержащий все строки независимо от того,что я делаю это слишком много символов или слишком мало
SharedPreferences sharedPreferences =
mActivity.getPreferences(Context.MODE_PRIVATE);
sp = sharedPreferences.getFloat("EXT_SIZE",50);
private void splitIntoLines(float textWidth, String[] textArray) {
ArrayList<String> Lines = new ArrayList<>();
StringBuilder tempString = new StringBuilder();
DisplayMetrics displayMetrics = new DisplayMetrics();
mActivity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
float screenWidth = displayMetrics.widthPixels;
float currentWidth=0;
for (String word : textArray) {
if ((currentWidth + ((word.length())* textWidth)) >=
screenWidth) {
Lines.add(tempString.toString());
tempString = new StringBuilder();
}
tempString.append(word).append(" ");
currentWidth = tempString.toString().length() * textWidth;
}
//used to debug
mTextView.setText(Lines.get(0));
}
public float getTextBounds(){
String text = "W";
Paint paint = new Paint();
paint.setTextSize( (sp));
paint.setTypeface(Typeface.DEFAULT);
return paint.measureText(text);
}