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

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

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

谢谢

  • 将两种不同的字体样式应用于TextView
  • 如何在Android TextView中调整文字字距?
  • Android - ListView没有收到带有可点击链接的文本视图的OnItemClick
  • ScrollView内容更新
  • 更改android中textview元素的字体大小
  • 如何删除TextView上边距?
  • 如何在布局中居中TextView?
  • 如何在android中的地方autocompletefragment中更改文本大小?
  • 您可以使用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