`

[转帖]自动调整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, 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编程实现自动调整TextView字体大小以适应文字长度的方法

    在Android开发中,有时我们需要创建一个TextView,它的字体大小能够自动调整以适应显示的文字长度,以确保文字始终完全可见,而不会超出TextView的边界。这个功能对于那些动态更新内容或者长度不固定的TextView尤其...

    TextView的字体自适应控件的大小

    当我们需要在`TextView`中展示大量文字,并希望它能自动适应屏幕大小和内容长度时,就需要用到字体自适应的技术。标题“TextView的字体自适应控件的大小”描述的就是这个功能,它是通过动态调整字体大小来确保文本...

    Android Studio如何修改字体的大小

    修改字体(font)大小(size) Android Studio 默认编辑器(Editor)的方案(Scheme)是无法... 您可能感兴趣的文章:Android编程实现自动调整TextView字体大小以适应文字长度的方法android根据分辨率自动调整字体大小的实例代

    textview字体大小自适应宽度

    在某些场景下,我们可能希望TextView的字体大小能够根据其宽度自动调整,以确保文本始终能够完全显示,这就是所谓的“自适应字体大小”。标题“textview字体大小自适应宽度”以及描述“自定义textview字体大小自适应...

    android设置TextView中不同的文字字体大小且垂直居中显示

    例如,我们想把"大字体文字"设为两倍大小: ```java int startIndex = 0; int endIndex = "大字体文字".length(); spannableText.setSpan(new RelativeSizeSpan(2f), startIndex, endIndex, Spanned.SPAN_...

    Android 一个TextView中设置不同字体大小和颜色

    RelativeSizeSpan通过指定相对于默认大小的比例来调整字体大小。 ```java ss.setSpan(new RelativeSizeSpan(1.5f), 3, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置"大字体"为默认大小的1.5倍 ss.setSpan(new ...

    Android textView根据长度自动换行-IT计算机-毕业设计.zip

    本项目是一个年前的Android应用源码示例,专为学生毕业设计学习而准备,旨在教授如何让TextView根据文本长度自动换行,以适应不同屏幕尺寸和用户需求。 在Android中,TextView默认情况下会自动换行,当一行文本无法...

    TextView自适应字体大小缩放

    在某些场景下,我们希望`TextView`能够根据文本内容的多少自动调整字体大小,以便文本能完全适应控件的宽度,避免换行或者超出视图范围。这种功能称为“字体自适应大小缩放”,它可以通过多种方法实现,以确保文字...

    自动修改字体大小的TextView

    本文将深入探讨如何实现一个自动调整字体大小的`TextView`,以确保文字始终适应视图的宽度。 首先,我们了解问题的核心:当文本的总宽度大于`TextView`的宽度时,需要动态地减小字体大小;反之,如果文本宽度小于`...

    android TextView自适应字体大小

    在特定场景下,我们可能希望`TextView`中的文本能根据其内容自动调整字体大小,以便所有文字都能在给定的`TextView`区域内完全显示,而不会导致换行或者超出边界。这就是`AutoScale TextView`的概念,它是一种可以...

    文字自动滚动TextView(长度不够也可以)

    标题中的“文字自动滚动TextView(长度不够也可以)”就是指即使文字内容不足以填满整个屏幕,也能实现这种滚动效果。 `Marquee` 是`TextView` 的一个特性,它允许文本在宽度不足的情况下仍然能沿水平方向滚动。...

    旋转TextView文字显示方向

    例如,垂直显示时,你可能需要调整TextView的宽度和高度,以适应新的布局需求。同时,可能需要处理文字的对齐方式,比如垂直居中。 5. **兼容性问题**: `android:rotation`属性是在API Level 11(Android 3.0, ...

    Android如何动态调整应用字体大小详解

    "Android 如何动态调整应用字体大小详解" Android 应用程序中,字体大小的调整是一个非常重要的设置,特别是在面向中老年客户的项目中,自带的字体无法满足客户需求的情况下。通常情况下, Android 应用字体大小...

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

    这时,需要实现文本内容自动调整字体大小,以适应TextView的大小。本文主要介绍了Android 自定义TextView实现文本内容自动调整字体大小的方法。 首先,需要创建一个自定义的TextView,继承自Android 的TextView类。...

    Android编程中TextView字体属性设置方法(大小、字体、下划线、背景色)

    本文实例讲述了Android编程中TextView字体属性设置方法(大小、字体、下划线、背景色)。分享给大家供大家参考,具体如下: import android.content.Context; import android.graphics.Color; import android.text....

    给TextView设置字体样式的三种方法

    在Android开发中,TextView是用于显示文本的基本...通过以上三种方式,开发者可以根据需求灵活地调整TextView的字体样式,提升应用的视觉效果和用户体验。理解并熟练运用这些方法,有助于打造更高质量的Android应用。

    android TextView 文字部分渐变

    `FontSpan`是Android中的一个自定义`CharacterStyle`,可以用来改变文本的一部分样式,如字体、大小、颜色等。在这里,我们将用它来设置渐变色。首先,我们需要继承`CharacterStyle`并覆写`updateDrawState...

    AutoScaleTextView自动改变文字大小TextView

    在Android开发中,`AutoScaleTextView`是一种特殊类型的`TextView`,它允许文本根据视图的宽度自动调整字号,以确保所有内容都能完全显示在屏幕上,而不会出现换行或剪切。这种功能在设计适应不同屏幕尺寸和分辨率的...

    ios-含提示文字的textView并可以自动适应文字改变自身的高度.zip

    a simple textView have placehoder text and can auto fit text content height (一款简单的含提示文字的textView并可以自动适应文字改变自身的高度) github地址:https://github.com/wjTime/WJTextView.git

Global site tag (gtag.js) - Google Analytics