首页 > 系统 > Android > 正文

Android 自定义TextView实现文本内容自动调整字体大小

2019-12-12 03:17:32
字体:
来源:转载
供稿:网友

最近做通讯录小屏机 联系人姓名显示--长度超过边界字体变小

/**  * 自定义TextView,文本内容自动调整字体大小以适应TextView的大小  * @author yzp  */ public class AutoFitTextView extends TextView {   private Paint mTextPaint;   private float mTextSize;   public AutoFitTextView(Context context) {     super(context);   }   public AutoFitTextView(Context context, AttributeSet attrs) {     super(context, attrs);   }   /**    * Re size the font so the specified text fits in the text box assuming the    * text box is the specified width.    *    * @param text    * @param textWidth    */   private void refitText(String text, int textViewWidth) {     if (text == null || textViewWidth <= 0)       return;     mTextPaint = new Paint();     mTextPaint.set(this.getPaint());     int availableTextViewWidth = getWidth() - getPaddingLeft() - getPaddingRight();     float[] charsWidthArr = new float[text.length()];     Rect boundsRect = new Rect();     mTextPaint.getTextBounds(text, 0, text.length(), boundsRect);     int textWidth = boundsRect.width();     mTextSize = getTextSize();     while (textWidth > availableTextViewWidth) {       mTextSize -= 1;       mTextPaint.setTextSize(mTextSize);       textWidth = mTextPaint.getTextWidths(text, charsWidthArr);     }     this.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize);   }   @Override   protected void onDraw(Canvas canvas) {     super.onDraw(canvas);     refitText(this.getText().toString(), this.getWidth());   } } 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持武林网!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表