美文网首页Android知识Android开发
Android动态调整字体大小以适应控件宽度

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

作者: ship1912 | 来源:发表于2017-03-07 11:10 被阅读425次

    最近遇到一个用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);
    }
    

    不过在调试的时候又发现其他问题,我是在AdaptergetView 方法中设置textview的文字内容的,问题出在最大宽度值的获取上面。

    一开始我直接用textView的getWidth方法。运行之后发现没有效果,原来getWidth获取到的值为0。不过当listView刷新一次后自适应会有效!

    然后我试着将maxWidth改成textView的 getMeasuredWidth,这时,第一次显示的时候是正常的,不过每刷新一次listview,文字都小一号,多刷几次后都看不见了!原来字体缩小以后 textViewgetMeasuredWidth 方法获取到的值也减小了。

    最终使用的方法是用背景图片 imageViewgetMeasuredWidth 方法获取宽度。能够正常显示。

    相关文章

      网友评论

        本文标题:Android动态调整字体大小以适应控件宽度

        本文链接:https://www.haomeiwen.com/subject/fqzpgttx.html