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

时间:2011-08-31 15:02:26

标签: android resize textview

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

<LinearLayout
  layout_width="100dip"
  layout_height="50dip">

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

</LinearLayout>

由于

4 个答案:

答案 0 :(得分:11)

您可以使用TextUtils.EllipsizeCallback。当文本被椭圆化时,这个回调由textview完成。在这里,您可以设置小于当前的文本大小。

编辑:否则您可以这样使用TextUtils.ellipsize

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

答案 1 :(得分:4)

此自定义函数应使用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);
        }
    }
}

答案 2 :(得分:0)

您始终可以将xml布局定义与java结合使用,并动态定义文本的大小。您可能需要从倾角单元到当前屏幕的像素密度信息的一些计算和参考,但一旦完成,它几乎可以保证解决所有情况下的问题。

答案 3 :(得分:0)

以下是一个自动调整文字的良好打包解决方案:https://github.com/grantland/android-autofittextview