新手Java问题 - 在Auto Scaling Text视图的所有帖子中,没有人指出您实际使用提供的类的方式。在Auto Scale TextView Text to Fit within Bounds
,看起来像Chase的更好的解决方案之一有没有人知道你如何使用它?例如:
String bigTextString = "This is a test!";
TextView t = (TextView)findViewById(R.id.big_text);
t.setTextSize(returnFontSize(bigTextString));
t.setText(bigTextString);
returnFontSize不存在,只是为了说明而显示。 AutoResizeTextView类在其自己的文件中正确设置。
谢谢(忽略下面的简短评论,因为StackOverflow有一个不允许重新评论评论的错误,而且它也限制为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”中的内容。
答案 0 :(得分:0)
如果您有一个描述如何制作和修改对象的类,那么您需要做的就是使用它的构造函数和方法来修改它。以下是您链接中的一个。
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 />
tl; dr - 使用构造函数