textView自动缩放字体大小

原创 2016年08月29日 19:01:00

textView显示的宽度是一定的,如果字数过长就要缩小字体,以满足显示宽度,如果字数少,就要正常显示字体大小,可自定义textView实现,代码如下:

public class AutoScaleTextView extends TextView {
    private static float DEFAULT_MIN_TEXT_SIZE = 0;
    private static float DEFAULT_MAX_TEXT_SIZE = 48;
    private Paint testPaint;
    private float minTextSize;
    private float maxTextSize;

    public AutoScaleTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initialise();
    }

    private void initialise() {
        testPaint = new Paint();
        testPaint.set(this.getPaint());
        maxTextSize = this.getTextSize();
        if (maxTextSize <= DEFAULT_MIN_TEXT_SIZE) {
            maxTextSize = DEFAULT_MAX_TEXT_SIZE;
        }
        minTextSize = DEFAULT_MIN_TEXT_SIZE;
    }
    
    private void refitText(String text, int textWidth) {
        if (textWidth > 0) {
            int availableWidth = textWidth - this.getPaddingLeft() - this.getPaddingRight();
            float trySize = maxTextSize;
            testPaint.setTextSize(trySize);
            while ((trySize > minTextSize) && (testPaint.measureText(text) > availableWidth)) {
                trySize -= 1;
                if (trySize <= minTextSize) {
                    trySize = minTextSize;
                    break;
                }
                testPaint.setTextSize(trySize);
            }
            this.setTextSize(TypedValue.COMPLEX_UNIT_PX, trySize);//TypedValue.COMPLEX_UNIT_PX不可少,将单位设置为像素
        }
    }

    @Override
    protected void onTextChanged(CharSequence text, int start, int before, int after) {
        super.onTextChanged(text, start, before, after);
        refitText(text.toString(), this.getWidth());
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        if (w != oldw) {
            refitText(this.getText().toString(), w);
        }
    }
}


TextView自动缩放字体-AutoTextView

我们在使用的时候,尤其是字体过大,又不想换行,那么自动缩放字体大小就是比较好的选择了。这边贴出相关代码以做记录。/** * Created by ttarfall on 2015/10/30. ...
  • qq_24641847
  • qq_24641847
  • 2015年12月25日 15:30
  • 1082

android 根据TextView宽度 自动缩小字体大小 以适应其宽度

package cc.coin.view;  import android.content.Context; import android.graphics.Canvas; import ...
  • h183288132
  • h183288132
  • 2015年08月20日 14:46
  • 3751

android 根据TextView宽度 自动缩小字体大小 以适应其宽度

package cc.coin.view;  import android.content.Context; import android.graphics.Canvas; import ...
  • h183288132
  • h183288132
  • 2015年08月20日 14:46
  • 3751

Android根据文字长度自动调整字号的TextView

标题根据文字的长度自动适配字号大小和换行显示,因为标题可能很长然后显示不完全。...
  • venusic
  • venusic
  • 2016年08月31日 12:51
  • 3271

自定义View,解决百分比布局适配时Textview的字体Textsize比例缩放问题

在使用百分比布局的过程中,大家可能会遇到一个问题,Textview的控件大小是由百分比分数算出来的,但是字体大小Textsize却没法确定。于是我想到继承textview写一个自定义的PercentT...
  • qq_29777823
  • qq_29777823
  • 2016年06月30日 18:45
  • 1809

解决百分比布局适配时Textview的字体Textsize比例缩放问题

本文主要介绍android 解决百分比布局适配时Textview的字体Textsize比例缩放问题,请看文章!...
  • itluochen
  • itluochen
  • 2016年10月31日 18:29
  • 737

动态更改textview的字体大小

最近app开发产品提出了一个需求是,需要动态更改TextView内容字体的大小,比如设定TextView只有一行,宽度只有200dp,内容超过这个之后就缩小字体显示,只能能将字体都显示完全;好吧,其实...
  • totcw
  • totcw
  • 2016年08月10日 18:44
  • 1563

android 解决百分比布局适配时Textview的字体Textsize比例缩放问题

转至:http://blog.csdn.net/qq_29777823/article/details/51792630 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • h183288132
  • h183288132
  • 2016年08月06日 11:23
  • 3409

缩放文本框ExpandTextView

效果图:代码:import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import a...
  • pengkv
  • pengkv
  • 2016年01月12日 15:39
  • 1702

textview使用SpannableString设置文字样式后,排版参差不齐的解决办法

如果你的textview使用了SpannableString设置文字的样式,但是设置发现后textview的排版参差不齐,那么请参照以下解决办法,这是我从ITEYE上复制过来的一篇文章,供大家参考,以...
  • stone_2323
  • stone_2323
  • 2014年12月10日 16:34
  • 2382
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:textView自动缩放字体大小
举报原因:
原因补充:

(最多只允许输入30个字)