在textview中拟合字符串

时间:2014-05-10 21:15:55

标签: android textview font-size

我的文字视图宽度为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");

这是结果。

enter image description here

1 个答案:

答案 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;
}