`
shirlly
  • 浏览: 1646384 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

自动调整TextView字体大小以适应文字长度

 
阅读更多
package me.mcar.parking.control;

import android.content.Context;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

public class AutoAjustSizeTextView extends TextView
{
	private static float DEFAULT_MIN_TEXT_SIZE = 10;
	private static float DEFAULT_MAX_TEXT_SIZE = 16;

	// Attributes
	private Paint testPaint;
	private float minTextSize, maxTextSize;

	public AutoAjustSizeTextView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
		
		initialise();
	}

	private void initialise()
	{
		testPaint = new Paint();
		testPaint.set(this.getPaint());

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


控件使用方法

<me.mcar.parking.control.AutoAjustSizeTextView
            android:id="@+id/parklist_item_address"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:textColor="#A0A0A0"
            android:textSize="12sp" />
分享到:
评论

相关推荐

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

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

    Android Studio如何修改字体的大小

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

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

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

    Android高级应用源码-textView根据长度自动换行.zip

    这个"Android高级应用源码-textView根据长度自动换行.zip"压缩包很可能是包含了一个示例项目,演示了如何让TextView在文本超出其宽度时自动换行,以适应不同屏幕尺寸和布局需求。 首先,我们来了解TextView的基本...

    安卓Android源码——textView根据长度自动换行.zip

    如果指定了固定宽度(如`wrap_content`或具体的像素值),TextView会自动调整行数以适应内容。如果设置了`ellipsize`属性,当文本超过视图边界时,末尾会显示省略号。 2. **自定义换行**: 要根据字符数进行换行,...

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

    * 自定义TextView,文本内容自动调整字体大小以适应TextView的大小 * @author yzp */ public class AutoFitTextView extends TextView { private Paint mTextPaint; private float mTextSize; public ...

    自适应内容的TextView

    2. **使用wrap_content和maxLines属性**:虽然TextView的默认行为是`wrap_content`,即根据内容的宽度自动调整大小,但我们可以限制其最大行数以控制宽度。例如,`android:maxLines="1"`将限制TextView只显示一行...

    ios-自动天正高度 textView.zip

    在许多场景下,我们希望`textView`的高度能够根据输入的文本动态调整,以适应不同长度的内容。标题“ios-自动天正高度 textView.zip”表明这个压缩包包含了一个iOS项目,该项目实现了自动调整`textView`高度的功能。...

    Android之TextView自适应大小

    总结起来,`Android之TextView自适应大小`是一个关于如何使用第三方库`AutofitTextView`来实现文本视图在不同屏幕尺寸和文本长度变化时,能够自动调整字体大小,以保持UI美观性的技术。通过引入和配置`...

    ios-textview自适应高度.zip

    在许多场景下,我们希望`UITextView`的高度能够根据其内部的文本内容自动调整,以便适应不同长度的文本,这就是所谓的"textview自适应高度"。这个特性使得用户界面更加灵活,可以更好地适应用户的输入。以下将详细...

    根据文字多少自动调整文字Text的功能

    根据文字多少自动调整文字Text的功能,源码AutoScaleTextView,实现了可以固定TextView的长度宽度,让其中的文字根据文字的多少来自动调整文字大小,使其适应TextView的长宽大小。也就是说,如果文字少,字体就自动...

    适用于长文本的TextView

    `autoFixTextView`可能是指一个具有自动调整宽度能力的`TextView`,这样它可以适应不同长度的文本并保持良好的布局效果。这可能涉及到以下技术: - **MeasureSpec**: 自定义视图需要理解Android的MeasureSpec,它...

    textview填空题

    在更新`TextView`内容时,应确保填空项的前后文正确调整,以适应新的文字长度。这可能涉及到复杂的文本布局计算,确保文本的排版不会因为新增或删除填空而混乱。 7. **保存和恢复状态**: 对于填空题的状态(用户...

    LHTextView:自动断行翻页textview

    1. **智能断行**:LHTextView能够自动检测文本的长度,并根据当前屏幕宽度动态调整文字的换行方式,确保每一行文本都能完全显示在屏幕上,避免了内容溢出。 2. **自动分页**:当输入的文本超过单屏显示的范围时,...

    ios-高度自适应的TextView.zip

    在许多场景下,如评论输入、日记编辑等,我们希望TextView的高度能够根据用户输入的字数动态调整,以保持界面的整洁和适应性。"ios-高度自适应的TextView.zip"这个资源包提供了一个名为ZWTextView的解决方案,专门...

    Android-MultiFontViewKotlin库可用于在XML中动态地为视图选择自定义字体

    除了基本的字体切换,`MultiFontTextView`还支持其他高级功能,比如动态改变字体、根据文本长度自动调整字体大小以适应宽度等。通过这些特性,开发者可以构建更丰富的文本展示效果,提升应用的视觉体验。 在实际...

    LabelTextViewDemo

    5. **尺寸适配**:考虑到不同设备的屏幕尺寸,`LabelTextView`可能需要自动适应屏幕大小,同时保持标签的相对比例,以保证在不同设备上的视觉一致性。 6. **响应点击事件**:如果标签需要承载交互,开发者会实现`...

    AutoScaleTextView.zip

    &lt;固定TextView的长度宽度,让其中的文字根据文字的多少来自动调整文字大小,使其适应TextView的长宽大小。也就是说,如果文字少,字体就自动调大,如果文字多,字体就自动调小。   测试环境: Eclipse 4.2, ...

    安卓动画效果相关-仿造映客的跑马灯效果.rar

    此外,可能还需要使用到LayoutParams动态调整TextView的大小和位置,以适应文本长度的变化。同时,可能需要处理文本溢出的情况,例如通过截断文本或者使用Marquee(滚动)属性来实现。 在实际的代码实现中,可能...

Global site tag (gtag.js) - Google Analytics