Android编程实现自动调整TextView字体大小以适应文字长度的方法

时间:2021-05-20

本文实例讲述了Android编程实现自动调整TextView字体大小以适应文字长度的方法。分享给大家供大家参考,具体如下:

package com.test.android.textview;import android.content.Context;import android.graphics.Paint;import android.util.AttributeSet;import android.widget.TextView;public class CustomTextView extends TextView { private static float DEFAULT_MIN_TEXT_SIZE = 10; private static float DEFAULT_MAX_TEXT_SIZE = 20; // Attributes private Paint testPaint; private float minTextSize; private float maxTextSize; public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); initialise(); } private void initialise() { testPaint = new Paint(); testPaint.set(this.getPaint()); // max size defaults to the intially specified text size unless it is // too small maxTextSize = this.getTextSize(); if (maxTextSize <= DEFAULT_MIN_TEXT_SIZE) { maxTextSize = DEFAULT_MAX_TEXT_SIZE; } minTextSize = DEFAULT_MIN_TEXT_SIZE; } /** * Re size the font so the specified text fits in the text box * assuming * the text box is the specified width. */ private void refitText(String text, int textWidth) { if (textWidth > 0) { int availableWidth = textWidth - this.getPaddingLeft() - this.getPaddingRight(); float trySize = maxTextSize; testPaint.setTextSize(trySize); while ((trySize > minTextSize) && (testPaint.measureText(text) > availableWidth)) { trySize -= 1; if (trySize <= minTextSize) { trySize = minTextSize; break; } testPaint.setTextSize(trySize); } this.setTextSize(trySize); } } @Override protected void onTextChanged(CharSequence text, int start, int before, int after) { super.onTextChanged(text, start, before, after); refitText(text.toString(), this.getWidth()); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { if (w != oldw) { refitText(this.getText().toString(), w); } }}

希望本文所述对大家Android程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章