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

 更新时间:2017年03月24日 09:12:30   作者:ganchuanpu  
本文主要介绍了Android 自定义TextView实现文本内容自动调整字体大小以适应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()); 
  } 
} 

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

相关文章

  • 纯android代码实现九宫格手势密码

    纯android代码实现九宫格手势密码

    这篇文章主要为大家详细介绍了纯android代码实现九宫格手势密码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Phonegap使用拍照功能时的内存问题

    Phonegap使用拍照功能时的内存问题

    最近几天在学习使用phonegap进行android应用的开发,网上的资料比较乱,个人参考了很多资料,也试验了很多次,一直在摸索,总算小有心得,这此过程中也遇到了一些问题,这里给大家分享下解决Phonegap使用拍照功能时的内存问题的方法,这里简单的整理一下
    2015-05-05
  • android实现单选按钮功能

    android实现单选按钮功能

    这篇文章主要为大家详细介绍了android实现单选按钮功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android仿淘宝预订日历(18)

    Android仿淘宝预订日历(18)

    这篇文章主要为大家详细介绍了Android仿淘宝预订日历的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android实现圆形纯数字按钮

    Android实现圆形纯数字按钮

    这篇文章主要为大家详细介绍了Android实现圆形纯数字按钮,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Android使用Circular Reveal动画让页面跳转更炫酷

    Android使用Circular Reveal动画让页面跳转更炫酷

    本篇文章主要介绍了Android使用Circular Reveal动画让页面跳转更炫酷,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • Android Retrofit原理深入探索

    Android Retrofit原理深入探索

    Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装
    2022-11-11
  • Android利用Sensor(传感器)实现水平仪功能

    Android利用Sensor(传感器)实现水平仪功能

    这篇文章主要为大家详细介绍了Android利用Sensor传感器实现水平仪功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android实现短信加密功能(发送加密短信、解密本地短信)

    Android实现短信加密功能(发送加密短信、解密本地短信)

    这篇文章主要介绍了android实现短信加密功能的相关资料,功能包括发送加密短信、解密本地短信,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android编程开发音乐播放器实例

    Android编程开发音乐播放器实例

    这篇文章主要介绍了Android编程开发音乐播放器,结合实例形式分析了Android音乐播放器开发所涉及的SeekBar,ListView,广播接收者(以代码的形式注册Receiver),系统服务,MediaPlayer等技巧,需要的朋友可以参考下
    2016-01-01

最新评论