2011-07-20 95 views
23

我有一個TextView設置爲橢圓大小,但是當我把文本放入它不這樣做。有任何想法嗎?文本不橢圓大小

<TextView 
    android:id="@+id/LegalsView" 
    android:ellipsize="end" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 
+1

你有沒有試過android:maxwidth屬性,我覺得這是你所需要的 –

回答

-1

我認爲你需要指定一個絕對寬度來工作。

android:layout_width="100dip" 

android:layout_width="fill_parent" 
+0

nope,仍然沒有正確的橢圓化 – digipen79

+0

不是一個好的答案。 –

3

如果您想獲得多省略號工作,遺憾的是它並不能很好地工作。這是Android平臺中的一個已知錯誤,據我所知它尚未修復。
TextView你可以得到最好的是2線ellipsizing(這可以通過設置

android:maxLines="2" 

參考this鏈接來實現。
即使在另一個答覆中提到的絕對寬度,它仍然只給。你在最大,2號線的省略號(但如還提到,一行省略號是可以實現的),因此,例如,你的文字可能會填補你的8號線的TextView,但看起來是這樣,當你打開省略號上:

+---------------------------------------------------+ 
|                                                   | 
| This is my cool text that is supposed to fill the | 
| entire textview but unfortunately because of t... | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
|                                                   | 
+---------------------------------------------------+ 

如果y你知道TextView的大小,你可以使用自定義組件here(不幸的是,最初託管它的谷歌代碼項目似乎已經消失,因此這個鏈接是我能找到的)。

+0

我已經做了很多次單線橢圓。它只需要一些調整(請參閱我的答案)。 –

+0

單線橢圓不是一個問題 - 它是多行橢圓化被打破。所以是的,您的解決方案將適用於單行省略號。 –

+0

啊,我的錯。我看到我們對OP的預期結果採取了不同的猜測。我從來沒有試過橢圓化多行。 –

15
android:layout_width="wrap_content" 

將允許TextView只要它需要(包括跑出屏幕)展開。爲了使其成爲橢圓形,您必須將寬度設置爲公民conn建議的寬度,最好使用android:layout_width="fill_parent"而不是絕對值。

附加提示:您還需要設置的TextView(可能是1)MAXLINES,並獲得實際的省略號(「...」)出現,你可能還需要設置

android:scrollHorizontally="true" 
+0

Glendon,如果你想要'android:ellipsize =「end」'不應該'scrollHorizo​​ntally'爲'false'。 (如果你想做'android:ellipsize =「marquee」',它應該是'true')。另外,我發現添加'android:lines'或'android:maxLines'屬性就足夠了 - 不需要'android :scrollHorizo​​ntally'。哦,設置'線路'或'maxLines'大於'1'也適用於我。 –

+0

當我在一年前發佈此答案時,這是正確的,並且需要將scrollHorizo​​ntally設置爲true才能使ellipsize屬性起作用。我不再做很多的Android開發,所以如果這一切發生變化,請隨時提出一個編輯。 –

+2

不,它仍然是真的,否則省略號不會顯示。沒有意義,但你去了。 – zeh

2

如果不定義爲您的TextView文本將ellipsize首先當你的文字達到父視圖寬度的具體寬度。

64

嘗試:

android:singleLine="true" 
+3

該行與ellipsize結合可產生所需的行爲。根據文檔建議, –

+3

已被棄用,最好使用maxLines。 – Necronet

+3

即使使用一些相對較新的實現,maxLine也不起作用,singleLine會這樣做。 – Alex

5

我已經能夠使這項工作的唯一方法是設置width="1dp"weight="1"ellipsize="end"maxLines="1"scrollHorizontally="true"。前兩個與width="match_parent"具有相同的效果,沒有小部件從顯示器邊緣擴展,剩下的三個設置都必須使文本變爲橢圓。

1

此解決方案:

android:ellipsize="end" 
android:singleLine="false" 
android:lines="3" 
android:maxLines="3" 

寬度也可以設置爲 「WRAP_CONTENT」

2

我的應用程序開始時,我加入

android:textIsSelectable="true" 

好像這些選項忽略的maxlines & ellipsize不兼容。

7

您需要匹配android的設置才能正確計算出該對象的位置。有幾種可能的組合,並取決於其餘佈局是在同一行上。

這是一個可行的組合:

android:layout_width="0dip" // dynamic width 
android:layout_weight="1" // less weight, other objects still "0" 
android:ellipsize="end"  // ... into end of text (right) 
android:singleLine="true" // one line, deprecated, but necessary for some ambients 
android:maxLines="1"  // one line, new mode 

綜上所述,您指定的重量,如果使用動態佈局,或只是一個固定的大小,然後指示只有一條線路,並配置如何。」 ..「 被展示。

+1

android:singleLine =「true」已被棄用?你能給源嗎? – Malachiasz

+0

在Eclipse中顯示來自更新的Android SDK的消息。我保持與舊版Android的兼容性。 –

0

你改變layout_width某些DP,而不是WRAP_CONTENT

使用
機器人:單線= 「真」

機器人:ellipsize = 「結束」

代碼:

android:layout_width="50dp" 
    android:layout_height="wrap_content" 
    android:text="check this text" 
    android:id="@+id/textView" 
    android:singleLine="true" 
    android:ellipsize="end"/> 
0

僅適用運行時,做這樣的事情:

textView.setEllipsize(TruncateAt.END); 
textView.setLines(1); 
textView.setHorizontallyScrolling(true); 
textView.setText("Long text goes here"); 
0

你可以和集MAXLINES像這樣:

 <TextView 
      android:id="@+id/txt_title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:maxLines="3" 
      android:ellipsize="end" 
      android:textStyle="bold"/> 

橢圓當文本超過設定的MAXLINES出現。