让TextView自动调整字体大小以填满父容器?

14

有没有一种方法可以让TextView选择一个字体大小,使其填满它所拥有的所有可用空间?例如:

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

  <TextView
    layout_width="fill_parent"
    layout_height="fill_parent"
    textSize="scale?" />

</LinearLayout>
感谢。

你能否分享一下你创建的代码?谢谢! - SpoiledTechie.com
3个回答

11

不,TextView 没有内置的字体缩放功能。您可以在继承 TextView 的子类中重载 onDraw() 方法,但 TextView 不支持自动缩放文本。

可以参考此问题


好的,是的,我只是不得不自己写点东西,有点糟糕。 - user291701

4

更新一下,从API 26(Android 8.0)开始,TextView有一个属性可以在水平和垂直轴上缩放文本。

<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:autoSizeTextType="uniform" />

请访问自适应TextView了解更多信息。


0

就像Nick Campion所引用的答案一样,我使用了一个循环和一个固定布局来迭代到正确的大小。 我的要求是适应宽度并且不超过一行(没有省略号):

    int i = 0;
    while(i < 2) {
       layout = new StaticLayout(text, textPaint, w, Alignment.ALIGN_NORMAL, 1, 0, true);
        i = layout.getLineCount();
        textSize += 2;
        textPaint.setTextSize(textSize);
    }
    textPaint.setTextSize(textSize*0.95f);

如果TextView的高度不够,这种方法可能会导致文本顶部被裁剪掉。 - Jonno_FTW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接