我有一个宽度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/

10-11 22:41
查看更多