字体大小自适应的TextView

缘起

开发中经常会遇到这样的情况,某天你心情正好的时候,产品拿着某台设备跑过来告诉你,快看这里的文字显示不下了,开发会说:擦,你这个字太长了啊,当然就显示不下了。然后产品会说:你看iOS是好的,看起来当文字太多的时候,字体变小了。之后Android开发就跑去问iOS开发你这个是怎么做到的,答曰:系统自带的功能,当显示不下时会自动缩小字号。Android开发表示心好累啊。。。没办法再怎么累,也得处理好这个问题。

解决方案

这个问题在Android开发中还是很普遍的,比如你在google中搜索"android textview auto font size",会看到一大堆关于这个问题的帖子,绝大部分都是网友在stackoverflow上的提问,比如像:

How to adjust text font size to fit textview
Auto Scale TextView Text to Fit within Bounds

这2个问题竟然都是5、6年前问的。。。

我自己的做法思路跟这些差不多,代码很简单,如下:

    private 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());
        // note that Paint text size works in px not sp
        float trySize = textPaintClone.getTextSize();

        while (textPaintClone.measureText(text) > avaiWidth) {
            trySize--;
            textPaintClone.setTextSize(trySize);
        }

        tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, trySize);
    }

算是一个快速解决问题能用的方案,供参考。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,919评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,744评论 2 45
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,366评论 4 61
  • 停留的自行车旁边, 盛开着团团蔷薇 一切, 仿佛像昨天 或许, 它们终会被时光埋没 但是, 它们也会认真谱写最后一...
    糖小嗷阅读 2,885评论 1 3
  • 人在情在,人还在情也许在,人刚不在,情也许即断。 人性有时比冰还冷,比豺狼的撕咬还让让疼痛。 刘小秀没想到丈夫李君...
    天空有云阅读 3,728评论 2 31

友情链接更多精彩内容