2012-02-04 38 views
1

新手Java问题 - 在Auto Scaling文本视图的所有帖子中,没有人指出实际使用提供的类的方式。它看起来像更好的解决方案之一是大通在Auto Scale TextView Text to Fit within Bounds自动缩放TextView文本以适合边界 - 如何调用?

有没有人有一个想法如何使用它?例如:

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

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

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调用XML构造;博士 - 使用构造

+0

谢谢,但我一定还失去了一些东西。如果我只使用建议的两条线: – Frank 2012-02-04 22:01:20

+0

嗯,是的,你需要设置一个属性设置为传入,以及课程活动的上下文 - ActivityName.this。你必须找到VewById(R.id.layoutName)才能访问活动中的布局。 – AJcodez 2012-02-05 09:11:29

+0

这就是我需要的! – Frank 2012-02-06 21:16:59