2010-10-22 48 views
10

我有一個活動,我想顯示一個標題,佔據應用程序的頂部四分之一,並顯示一組動態文本。在某些情況下,它將全部適合於一行,並且我希望字體大小能夠變大,因此它很大且易於閱讀。在某些情況下,它將在多行(通常小於4),並且需要更小。調整Android多行TextView

的複雜之處在於,如果我明確設置的setText換行符有時它會插入一個新行,我沒想到一個,即:

 
"My first line of text\nMy Second line of text" 
Might get turned into (it's right adjusted in this version): 
"My first line of 
      text 
    My second line 
      of text" 

我不知道如何去保存任何TextView試圖插入換行符或讓它只是格式化整個事情。如果我將一些文本設置爲一個非常長的單個單詞,它會在某個選定的點處在中間插入一個換行符。而其他時候,我只是隨機獲取最後幾行文字。

我應該只是明確地設置字體大小爲非常小,讓它正確地佈局,然後手動調整大小?我應該使用這種「最佳做法」嗎?如果我將字體大小設置爲相當大的字體,那麼這種方法很有用,但如果能夠找到「正確」的方式,那將是一件好事。我寧願不必手動添加4個單行TextView,並自己設置格式。

我使用的佈局XML是:

<TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="10dip" 
     android:layout_marginRight="8dip" 
     android:singleLine="false" 
     android:ellipsize="marque" 
     android:gravity="right|bottom" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textSize="30sp" 
/> 
+0

恩,這不是很清楚你想做什麼。你想調整文本大小來填充文本框?你爲什麼要添加新行?只需設置大小,放入文本,並讓它包裝。 – Falmarri 2010-10-22 22:44:43

+0

你放了多大的尺寸才能真正適合整個文本框?如果您選擇的尺寸太大,TextView會決定在文本中加入/插入新行(我不確定它是如何決定的)。如果你選擇一個小的尺寸,並且不要在你自己中添加新的線條,那麼就很難確定它的大小,而不是基本上逐步調整每個字體大小,並且每次都重新輸出文本(插入新線條)。如果你只是防止TextView搞亂事情並且自己調整/插入新行,那將會很好。 – William 2010-10-23 23:05:11

回答

0

你可以做到這一點。在字符串值中追加一個新的行結構。然後將此字符串值設置爲TextView的文本屬性。

String temp = "ASDF \n"+"EFG \n"+"HIJ"; 
TextView tv=//find it from the context 
tv.setText(temp); 
0

還有一個解決方案,您可以使用的WebView做你想要檢查這個Android TextView Justify Text答案細節的東西。使用webview你不必關心線對齊,你可以通過HTML CSS屬性管理

-1

讓我回顧一下你的問題,以確保我正確理解你。

  1. 您輸入始終文本的1至4號線
  2. 你總是和只想在行結束時斷裂,如果你有一個以上的線
  3. 你想成爲各行大盡可能使它適合1/4高度屏幕的文本視圖?

我建議你做一個custom view

  • 使用Paint.getTextBounds來動態確定最佳的文字大小碼
  • 繪製你可以使用輔助類StaticLayout取向控制和這樣的文字。
  • 有你的自定義查看佔據屏幕的1/4要麼把它的LinearLayout內,並使用layout_weight指定它的高度或View.onMeasure
1

編程設置,您可以指望的字符串lenght和設置文字大小,以適應最佳尺寸爲每個lenght

東西以這種形式

if(myString.length()==40){ 
    myTextview.setTextSize(11); 
else if(myString.length()==25){ 
    myTextview.setTextSize(16); 
... 

我希望這有助於。