2012-02-04 37 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