一聚教程网:一个值得你收藏的教程网站

热门教程

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

时间:2022-06-25 23:24:06 编辑:袖梨 来源:一聚教程网

 

 代码如下复制代码

/**

 * 自定义TextView,文本内容自动调整字体大小以适应TextView的大小

 * @author yzp

 */

publicclassAutoFitTextViewextendsTextView {

  privatePaint mTextPaint;

  privatefloatmTextSize;

  publicAutoFitTextView(Context context) {

    super(context);

  }

  publicAutoFitTextView(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

   */

  privatevoidrefitText(String text,inttextViewWidth) {

    if(text ==null|| textViewWidth <=0)

      return;

    mTextPaint =newPaint();

    mTextPaint.set(this.getPaint());

    intavailableTextViewWidth = getWidth() - getPaddingLeft() - getPaddingRight();

    float[] charsWidthArr =newfloat[text.length()];

    Rect boundsRect =newRect();

    mTextPaint.getTextBounds(text,0, text.length(), boundsRect);

    inttextWidth = 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

  protectedvoidonDraw(Canvas canvas) {

    super.onDraw(canvas);

    refitText(this.getText().toString(),this.getWidth());

  }

}

 

热门栏目