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

2020-08-07  本文已影响0人  Berlin麒麟

在项目开发中会经常遇见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);
    }
上一篇下一篇

猜你喜欢

热点阅读