自动缩放 TextView 文本以适应范围 - 如何调用?

Posted

技术标签:

【中文标题】自动缩放 TextView 文本以适应范围 - 如何调用?【英文标题】:Auto Scale TextView Text to Fit within Bounds - How to call? 【发布时间】:2012-02-26 22:58:45 【问题描述】:

新手 Java 问题 - 在 Auto Scaling the Text 视图的所有帖子中,没有人指出您实际如何使用提供的类。看起来更好的解决方案之一是 Chase 在Auto Scale TextView Text to Fit within Bounds

有人知道你是如何使用它的吗?例如:

String bigTextString = "This is a test!";

TextView t = (TextView)findViewById(R.id.big_text);
t.setTextSize(returnFontSize(bigTextString));
t.setText(bigTextString);

returnFontSize 不存在,仅用于说明。 AutoResizeTextView 类已在其自己的文件中正确设置。


谢谢(忽略下面的简短评论,因为 *** 有一个不允许重新编辑评论的错误,而且它也限制为 512 个字符)。

我一定还是错过了什么。如果我只使用建议的两行,你在哪里传递文本字符串?我尝试了类似的东西,但它只是在运行时崩溃,这是有道理的。

AutoResizeTextView t = new AutoResizeTextView(this); 
linearMain.addView(findViewById(R.id.big_text));

addView 失败并显示“IllegalStateException:指定的孩子已经有父母。您必须先在孩子的父母上调用 removeView()。”,这看起来很奇怪,因为我不想删除视图(我认为) ,而且我不知道它如何知道要放在屏幕上的字符串。

addView 真的有必要吗,因为它已经在布局中定义了。

我只想将文本传递给它。例如:

TextView t = (TextView)findViewById(R.id.big_text);
t.setTextSize(textSize);
t.setTextColor(textColor);
t.setText(bigTextString);

这会运行,除了 android 在根据“bigTextString”中的内容在屏幕上拟合文本方面做得很差。

【问题讨论】:

【参考方案1】:

如果你有一个描述如何创建和修改对象的类,你需要做的就是创建它并使用它的构造函数和方法修改它。以下是您的链接中的一个。

public FontFitTextView(Context context, AttributeSet attrs) 
    super(context, attrs);

    float size = this.getTextSize();
    if (size > MAX_TEXT_SIZE)
        setTextSize(MAX_TEXT_SIZE);

您调用您的活动FontFitTextView textViewName = new FontFitTextView(context, attrs);,然后将其添加到layoutName.addView(textViewName); 的视图中这意味着您需要通过其android:id 找到您用于布局的视图,因为我假设您不想构建整个布局以编程方式。也可以通过<packagename.FontFitTextView />调用xml中的构造函数

tl;dr - 使用构造函数

【讨论】:

谢谢,但我一定还是遗漏了一些东西。如果我只使用建议的两行: 嗯,是的,您需要设置要传入的属性,以及课程 ActivityName.this 的上下文。您必须 findVewById(R.id.layoutName) 才能访问您在活动中的布局。

以上是关于自动缩放 TextView 文本以适应范围 - 如何调用?的主要内容,如果未能解决你的问题,请参考以下文章

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

创建一个带有缩放文本和图像以适应剩余空间的div?

缩放文本以适应文本字段;缩放文本字段以适应文本。

UILabel 多行文本缩放字体以适应 \n

IOS / Storyboard / Autolayout:使Textview垂直扩展以适应文本

AppCompatTextView自动缩放字体在RecyclerView中卡顿,自定义高效自动缩放TextView