1.View中获取字符串的高度宽度
private Paint mPaint ;
//声明一个Paint
mPaint = new Paint();
//设置字体大小
mPaint.setTextSize(20.0f);//根据字号统计宽度
//用来测试的字符串
String testString = "test string";
//根据 measureText获取宽度
float width2 = mPaint.measureText(testString);
2.字符串大小自适应固定宽度TextView
在某些情况下我们的TextView的大小是固定的,我们希望不论多长的字符串,都能够自动调整大小来适应我们的TextView,示例代码如下:
/**
* 根据宽度和字符串大小 ,获取字体大小 ,有最小限制为20
*
* @param tv
* @param width 设置宽度
* @param str 文字
* @param isSetTextSize 是否设置字体大小
* @return
*/
public static float getTextSize(TextView tv, int width, String str, Boolean isSetTextSize) {
//字符最大的大小
float defaultSize = tv.getTextSize();
Paint paint = tv.getPaint();
float minSize = 20;
for (; ; ) {
if (defaultSize <= minSize) {
break;
} else {
paint.setTextSize(defaultSize);
float wm = paint.measureText(str);
if (wm <= width) {
defaultSize -= 3;//实际字号需要小3号
break;
} else {
//每次减小的步长
defaultSize -= 1;
}
}
}
//设置字体大小
if (isSetTextSize) {
tv.setTextSize(defaultSize);
}
return defaultSize;
}
该文参考:https://blog.csdn.net/u013780605/article/details/52119699