TextView字体大小根据控件大小自动缩放

在项目开发中会经常遇见TextView字体大小自适应的需求,比如个人中心中公司名称:


1596781274(1).png
1596781305(1).png

实现这样的功能是需要自己实现的。

   /**
     * 根据给定的宽度,自动缩小TextView的字体
     *
     * @param txt
     * @param maxWidth
     * @param value
     */
    public static void autoTextSize(TextView txt, float maxWidth, String value) {
        if (txt == null) {
            return;
        }
        if (maxWidth <= 0) {
            return;
        }
        if (TextUtils.isEmpty(value)) {
            return;
        }
        float tvWidth = txt.getPaint().measureText(value);
        LogUtils.d("tvWidth1 = " + tvWidth);
        // 如果超出边界,调整字体
        int count = 0;
        while (tvWidth > maxWidth) {
            //防止无限循环导致anr等问题
            if (count > 100) {
                break;
            }
            count++;
            txt.setTextSize(TypedValue.COMPLEX_UNIT_PX, txt.getTextSize() - 1);
            tvWidth = txt.getPaint().measureText(value);
            LogUtils.d("tvWidth2 = " + tvWidth);
        }
        txt.setText(value);
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。