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());  
    }  
}  

  

时间: 2024-08-01 10:44:43

Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小的相关文章

android自定义闪烁的文本

自定义闪烁文本,直接代码搞上: package custom.text.view; import java.util.Timer; import java.util.TimerTask; import android.content.Context; import android.graphics.Color; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; impor

MVC3/4 自定义HtmlHelper截断文本内容(截取)

在MVC目录下新建一个名为 Extersions  的文件夹,在该文件夹中新建一个截断文本类,取名为:CutOfTextExtersions 该类代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace System.Web.Mvc //修改为所属System.Web.Mvc命名空间 方便直接使用 { ///

Android中实现APP文本内容的分享发送与接收方法简述

谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要通过微信或者QQ,短信等社交工具发送给大家. (2)在网上发现一段特别好的文章,想要保存收藏下来. 上面描述了进入智能手机时代后,我们经常遇到的两种情况,那么作为开发者的我们如何让自己开发的APP实现这两种功能呢,下面我们以实现文本的发送分享以及接收来梳理下两种功能的实现过程(其他类型的数据在博文末

Android自定义视图(一):带下划线的TextView

package com.francis.underlinetextviewtest; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import an

iOS开发之----根据文本内容和字体大小计算UILabel的size

方法1: CGSize labelSize = [label中文本的内容(text)    boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 10, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context

Android应用开发EditText文本内容变化监听方法

import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; public class ActMain extends Activity { private EditText et_search; @Override public void onCreate(B

Android 自定义TextView 实现文本间距

Android系统中TextView默认显示中文时会比较紧凑,不是很美观.为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier. 但是有时候我们需要在TextView的文本之间有间距,两个字的话,我们可以在xml文件中,用敲空格的方式来实现,如果有很多文本或者是一个变量的文本呢.我们还这样用敲空格的方式来实现吗?oh no~! 如何实现行间距和文本间距呢?(请往下看 ↓). 1.设置TextView的

Android控件之TextView(显示文本框控件)

一.TextView控件的常用属性 android:id——控件的id   android:layout_width——控件的宽度  android:layout_height——控件的高度 android:text——文本内容 android:textSize——文本大小 android:textColor——文本颜色 android:background——控件背景  android:singleLine——是否单行显示(true为单行,false(默认)自动换行) android:text

Android自定义组件之日历控件-精美日历实现(内容、样式可扩展)

需求 我们知道,Android系统本身有自带的日历控件,网络上也有很多开源的日历控件资源,但是这些日历控件往往样式较单一,API较多,不易于在实际项目中扩展并实现出符合具体样式风格的,内容可定制的效果.本文通过自定义日历控件,实现了在内容和样式上可高度扩展的精美日历demo,有需要的Android应用开发人员可迅速移植并按需扩展实现. 在某个应用中,需要查询用户的历史考勤记录,根据实际考勤数据在日历中标记出不同的状态(如正常出勤.请假.迟到等),并在页面中显示相应的说明文字. 效果 实现的效果如