Android动态调整字体大小以适应控件宽度

最近遇到一个用ImageView为背景来显示文字的TextView适配问题,当要显示的文字太长时文本会换行,而iOS中没有这个问题。

在网上查找资料,发现可以用TextPaint加measureText方法解决这个问题,代码如下:

 /** 字体大小适配**/
 public static void adjustTvTextSize(TextView tv, int maxWidth, String text)
    int avaiWidth = maxWidth - tv.getPaddingLeft() - tv.getPaddingRight() - 10;
    if (avaiWidth <= 0) {
        return;
    TextPaint textPaintClone = new TextPaint(tv.getPaint());
    float trySize = textPaintClone.getTextSize();
    while (textPaintClone.measureText(text) > avaiWidth) {
        trySize--;
        textPaintClone.setTextSize(trySize);
    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, trySize);