我的文字视图宽度为maxWidth
。我使用以下函数来选择字符串的字体大小以适应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");
这是结果。
答案 0 :(得分:1)
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;
}