我有一个宽度maxWidth
的textview。我正在使用以下函数来选择字符串的字体大小以适合textview。该函数返回fontsize,以使字符串的宽度与textview的宽度匹配。但是,textview仅显示字符串的一部分。怎么了 ?
private int determineMaxTextSize(String str, float maxWidth)
{
int size = 0;
Paint paint = new Paint();
do {
paint.setTextSize(++ size);
} while(paint.measureText(str) < maxWidth);
Log.d("wop",""+paint.measureText(str));
return size;
}
这是显示字符串的方式。
LayoutParams params;
params = textview.getLayoutParams();
params.height = maxWidth;
params.width=maxWidth;
textview.setLayoutParams(params);
int textsize=determineMaxTextSize("60 s", maxWidth);
textview.setTextSize(textsize);
textview.setText("60 s");
这就是结果。
最佳答案
Paint#measureText()
返回dip
中的值。需要将其转换为像素。
试试这个代码:
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;
}
关于android - 在textview中拟合字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23586399/