在视图中缩放文本以适合?

我不相信这是存在的,但想要仔细检查。 我想设置一个TextView的文本大小,以适应在一个给定的宽度,单行。 例:

<LinearLayout layout_width="100dip" layout_height="50dip"> <TextView layout_width="fill_parent" layout_height="wrap_content" textSize="fill" text="fit me please!" /> </LinearLayout> 

谢谢

Solutions Collecting From Web of "在视图中缩放文本以适合?"

您可以使用TextUtils.EllipsizeCallback 。 当文本被省略时,这个callback是由textview完成的。 在这里你可以设置比当前更小的文字大小。

编辑:否则,你可以使用TextUtils.ellipsize这种方式

 while (mText != TextUtils.ellipsize(mText, textPaint, other params)) { textpaint.setTextSize(textpaint.getTextSize() - 1); } 

这个自定义函数应该这样做,使用TextUtils.ellipsize …

 public static void shrinkTextToFit(float availableWidth, TextView textView, float startingTextSize, float minimumTextSize) { CharSequence text = textView.getText(); float textSize = startingTextSize; textView.setTextSize(startingTextSize); while (text != (TextUtils.ellipsize(text, textView.getPaint(), availableWidth, TextUtils.TruncateAt.END))) { textSize -= 1; if (textSize < minimumTextSize) { break; } else { textView.setTextSize(textSize); } } } 

您总是可以将xml布局定义与java结合起来,并dynamic定义文本的大小。 您可能需要一些计算和dip单位参考关于当前使用的屏幕的像素密度信息,但一旦完成,它应该几乎保证解决您的问题的所有情况下。

这是一个很好的解决scheme来自动适应文本: https : //github.com/grantland/android-autofittextview