软件编程
位置:首页>> 软件编程>> Android编程>> Android 自定义TextView实现文本内容自动调整字体大小

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

作者:ganchuanpu  发布时间:2023-11-07 11:47:40 

标签:android,textview

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


/**
* 自定义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());
 }
}

来源:http://www.cnblogs.com/ganchuanpu/p/6607546.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com