Paint#measureText()
returns value in dip
. Need to convert it to pixels.
Try this code:
private int determineMaxTextSize(String str, float maxWidth) {
int size = 0;
Paint paint = new Paint();
float scaleDensity = getResources().getDisplayMetrics().density;
do {
paint.setTextSize(++ size);
} while (paint.measureText(str) * scaleDensity < maxWidth);
return --size;
}