`

自动调整TextView字体大小以适应文字长度&拖动一个角增大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);
		}
	}
}



拖动一个角增大textView面积
public class EditTextClass extends Activity implements OnTouchListener {

    private EditText txt;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txt = (EditText) findViewById(YourEditTextId);
        txt.setOnTouchListener(this);
    }


    @Override
    public boolean onTouch(View v, MotionEvent event) {
       if(event.getX() >= txt.getWidth() - 5 && event.getX() <= txt.getWidth()
            event.getY() >= txt.getHeight() - 5 && event.getY() <= txt.getHeight()) {
           txt.setWidth(event.getX()); 
           txt.setHeight(event.getY());
       }
       return true;
    }
}


ImageView伸缩动画效果
http://edison-cool911.iteye.com/blog/870339
分享到:
评论
1 楼 安轩之 2011-09-20  
楼主,你写的是否有误???

相关推荐

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

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

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

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

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

    当我们需要在一个TextView中展示不同字体大小和颜色的文本时,可以借助SpannableString和相关Span类来实现。下面将详细解释如何实现这个功能。 首先,了解SpannableString。SpannableString是CharSequence的一个...

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

    在Android开发中,有时我们需要在同一个TextView中展示不同大小的文字,并让它们保持垂直居中对齐。这可以通过使用SpannableString来实现。SpannableString是Android SDK提供的一种可操作字符串对象,允许我们在字符...

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

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

    textview字体大小自适应宽度

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

    Android Studio如何修改字体的大小

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

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

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

    TextView自适应字体大小缩放

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

    自动修改字体大小的TextView

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

    android TextView自适应字体大小

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

    旋转TextView文字显示方向

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

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

    首先,我们需要创建一个`Typeface`对象,然后将其应用到TextView上。以下是一个简单的示例: ```java Typeface systemFont = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Regular.ttf"); TextView ...

    AutoScaleTextView自动改变文字大小TextView

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

    android TextView 文字部分渐变

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

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

    Android 应用程序中,字体大小的调整是一个非常重要的设置,特别是在面向中老年客户的项目中,自带的字体无法满足客户需求的情况下。通常情况下, Android 应用字体大小默认随系统设置的字体大小而变化,但有时我们...

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

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

    android-autofittextview, 一个 TextView,它自动调整文本大小以适应它的边界.zip

    android-autofittextview, 一个 TextView,它自动调整文本大小以适应它的边界 AutoFitTextView 一个 TextView,它自动调整文本大小以适应它的边界。 用法dependencies { compile 'me.grantland:autofittextview:0.2....

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

    在自定义的TextView中,需要定义一个refitText方法,该方法用于调整文本的字体大小,以适应TextView的大小。该方法接收两个参数:文本内容和TextView的宽度。通过循环减小字体大小,直到文本内容可以完全显示在...

Global site tag (gtag.js) - Google Analytics