2010-11-29 118 views
2

在我的Flex應用程序中,我有一個<mx:Text>控件,其高度和寬度固定足以顯示兩行。現在,如果文本太長而不能以兩行顯示,我想將它截斷並顯示省略號(...)。帶有省略號的默認截斷似乎與標籤一同出現,但標籤不能在兩行中顯示文本。如何使用省略號(...)在flex中截斷文本?

如何在<mx:Text>控件中模仿flex行爲?提前致謝!!!

+0

打開標籤代碼,找到截斷文本的代碼,然後在擴展文本的類中使用相同的方法。 – JeffryHouser 2010-11-29 13:26:08

回答

1

恰巧,Flex 3中的Text類是Label的子類。這意味着將Text控件的「truncateToFit」屬性設置爲true應該足夠了。

+0

將truncateToFit設置爲true或false不會顯示任何更改。文本仍然被截斷。此外,文本控制文檔說「...不像標籤,文本不會截斷其文本與」...「」(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx /controls/Text.html#propertySummary)。 – Goje87 2010-11-30 06:46:14

1

我已經找到了最好的解決方案是通過火花標籤和maxDisplayedLines財產,像這樣:

 <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:s="library://ns.adobe.com/flex/spark" > 
      <s:Label text="{data.Name}" maxDisplayedLines="3" verticalAlign="middle" /> 
     </mx:Canvas> 

完全爲我工作。 一般來說,我發現火花標籤比mx標籤好,但YMMV。

+0

完美適用於火花標籤! – 2011-08-07 22:29:29

0

在flex 4上,您需要將Label#maxDisplayedLines設置爲大於0的東西,它會爲您剪裁。

this看看如何自定義 「...」

4

spark.components.Label組件繼承spark.components.supportClasses.TextBasemaxDisplayedLines財產。以下是對該特定屬性的幫助:

一個整數,用於確定文本是否被截斷以及在哪裏截斷。

截斷文本意味着用諸如「...」之類的截斷指示符替換多餘的文本。截斷指示符是語言環境相關的;它由「核心」資源包中的「truncationIndicator」資源指定。

如果該值爲0,則不會發生截斷。相反,如果文本不符合組件的邊界,文本將被簡單地裁剪。

如果該值是一個正整數,則文本將被截斷(如果需要)以將行數減少爲此整數。

如果該值爲-1,則文本將被截斷以顯示儘可能多的行,這將完全符合組件的高度。

截斷僅在lineBreak樣式爲「toFit」時執行;如果lineBreak是「顯式」,則忽略此屬性的值。

默認值爲0。

由此我們可以看到,如果將maxDisplayedLines屬性設置爲-1,則組件將顯示儘可能多的文本,並在必須截斷文本時追加「...」。

1

我知道這是一箇舊帖子,但很多人仍在開發和維護混合的Spark/MX項目。所以我會爲那些仍然面臨這個問題的人們提供我的兩分錢,特別是在使用MX列表和數據網格時,並且需要渲染器中的多行截斷。

據我所知,問題是關於MX組件,使用Spark將是一個不錯的選擇,但只有在可能的情況下。所以,如果「s:Label」不是選擇,我會認爲最好的方法是擴展MX Label組件,並將textField的多行屬性設置爲true。這應該做的伎倆,我首先嚐試添加更新的updateDisplayList方法的邏輯。

相關問題