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

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

时间: 2024-12-22 10:46:25

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

Android自定义TextView实现drawableLeft内容居中

如何实现使用TextView的DrawableLeft使图片和文字居中显示呢??? 代码如下: 1.首先自定义一个类,继承TextView package com.test.signcalendar.weight; import android.content.Context; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; i

android自定义textview怎么显示字体库图标

问题描述 android自定义textview怎么显示字体库图标 androd自定义textview怎么显示字体库图标,就是iconfont各位帮帮忙 解决方案 请参考 这篇文章http://blog.csdn.net/u013401219/article/details/46427503

android根据分辨率自动调整字体大小的实例代码_Android

手机设备太多,分辨率也不一样,看到网上大部分的适应字体的方法是定义values320×480或value-hdpi方式去处理.采用第一种的就惨了,很多设备的分辨率是不一样的,难道要每种都定义吗?采用第二种的在平板电脑里没有效果. 最后还是代码的方式方便快捷... [java] 复制代码 代码如下: //遍历设置字体  public static void changeViewSize(ViewGroup viewGroup,int screenWidth,int screenHeight) {/

android编程实现添加文本内容到sqlite表中的方法_Android

本文实例讲述了android编程实现添加文本内容到sqlite表中的方法.分享给大家供大家参考,具体如下: 第一步: 创建表 CREATE TABLE DLION ( _id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT, questionId INTEGER, answerId INTEGER, [right] INTEGER ); 第二步: 把编辑文本内容并放到 res/raw/test.txt 用 Notepad++ 打开,把每一个将要放在

android编程实现添加文本内容到sqlite表中的方法

本文实例讲述了android编程实现添加文本内容到sqlite表中的方法.分享给大家供大家参考,具体如下: 第一步: 创建表 CREATE TABLE DLION ( _id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT, questionId INTEGER, answerId INTEGER, [right] INTEGER ); 第二步: 把编辑文本内容并放到 res/raw/test.txt 用 Notepad++ 打开,把每一个将要放在

android根据分辨率自动调整字体大小的实例代码

手机设备太多,分辨率也不一样,看到网上大部分的适应字体的方法是定义values320×480或value-hdpi方式去处理.采用第一种的就惨了,很多设备的分辨率是不一样的,难道要每种都定义吗?采用第二种的在平板电脑里没有效果. 最后还是代码的方式方便快捷... [java]复制代码 代码如下://遍历设置字体  public static void changeViewSize(ViewGroup viewGroup,int screenWidth,int screenHeight) {//传

Android 自定义TextView去除paddingTop和paddingBottom

Android 自定义TextView去除paddingTop和paddingBottom 最近项目中需要用libgdx渲染一个Android的TextView, 但是绘制出来的TextView总是默认带有paddingTop和paddingBottom, 如下图所示: 网上有很多解决方案,例如在xml中设置如下属性: android:lineSpacingMultiplier="0.8" android:includeFontPadding="false" 或者设

php实现在限定区域里自动调整字体大小的类实例_php技巧

本文实例讲述了php实现在限定区域里自动调整字体大小的类.分享给大家供大家参考.具体如下: 这里的php类imagefittext.class.php实现在限定的区域里自动调整字体大小的功能. <?php // Image Fit Text Class 0.1 by ming0070913 CLASS ImageFitText{ public $font, $fontsize, $width, $height; public $step_wrap, $step_fontsize; public

编程c语言-vs2013中编写c++程序能够调整cout的内容的字体大小么

问题描述 vs2013中编写c++程序能够调整cout的内容的字体大小么 10C vs2013中编写c++程序能够调整cout的内容的字体大小么如何做到呢? 解决方案 可以的,这种情况就相当于你是在命令行中输出的,所以直接通过cmd调整命令行的字体大小就行了,, 你可以添加头文件stdlib #include <stdlib.h> 然后用这行命令 system(""pause""); 等你程序运行到这一行的时候会停止,于是你右键弹出来的黑框框,然后再选项