在我的Flex應用程序中,我有一個<mx:Text>
控件,其高度和寬度固定足以顯示兩行。現在,如果文本太長而不能以兩行顯示,我想將它截斷並顯示省略號(...)。帶有省略號的默認截斷似乎與標籤一同出現,但標籤不能在兩行中顯示文本。如何使用省略號(...)在flex中截斷文本?
如何在<mx:Text>
控件中模仿flex行爲?提前致謝!!!
在我的Flex應用程序中,我有一個<mx:Text>
控件,其高度和寬度固定足以顯示兩行。現在,如果文本太長而不能以兩行顯示,我想將它截斷並顯示省略號(...)。帶有省略號的默認截斷似乎與標籤一同出現,但標籤不能在兩行中顯示文本。如何使用省略號(...)在flex中截斷文本?
如何在<mx:Text>
控件中模仿flex行爲?提前致謝!!!
恰巧,Flex 3中的Text類是Label的子類。這意味着將Text控件的「truncateToFit」屬性設置爲true應該足夠了。
將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
我已經找到了最好的解決方案是通過火花標籤和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。
完美適用於火花標籤! – 2011-08-07 22:29:29
我對這個話題在這裏一篇博客文章中,無論是作品的Flex的版本以及您正在使用:
http://www.tjdownes.com/post.cfm/easy-string-truncation-with-ellipsis-using-ternary-operators-in-as3
這樣做的缺點是:
myString.slice (0,150).concat(myString.length> 150?「...」:「」);
這將截斷字符串爲150個字符,如果字符串長度超過150個字符,則會添加省略號。
在flex 4上,您需要將Label#maxDisplayedLines
設置爲大於0的東西,它會爲您剪裁。
見this看看如何自定義 「...」
的spark.components.Label
組件繼承spark.components.supportClasses.TextBase
的maxDisplayedLines
財產。以下是對該特定屬性的幫助:
一個整數,用於確定文本是否被截斷以及在哪裏截斷。
截斷文本意味着用諸如「...」之類的截斷指示符替換多餘的文本。截斷指示符是語言環境相關的;它由「核心」資源包中的「truncationIndicator」資源指定。
如果該值爲0,則不會發生截斷。相反,如果文本不符合組件的邊界,文本將被簡單地裁剪。
如果該值是一個正整數,則文本將被截斷(如果需要)以將行數減少爲此整數。
如果該值爲-1,則文本將被截斷以顯示儘可能多的行,這將完全符合組件的高度。
截斷僅在lineBreak樣式爲「toFit」時執行;如果lineBreak是「顯式」,則忽略此屬性的值。
默認值爲0。
由此我們可以看到,如果將maxDisplayedLines屬性設置爲-1,則組件將顯示儘可能多的文本,並在必須截斷文本時追加「...」。
火花組件具有傳統屬性:@see。 http://blog.flexexamples.com/2009/06/15/determining-if-a-spark-simpletext-control-is-truncated-in-flex-4/
對於火花標籤,您可以設置lineBreak =「toFit」,然後設置寬度: –
Yav
2012-07-03 15:54:15
我知道這是一箇舊帖子,但很多人仍在開發和維護混合的Spark/MX項目。所以我會爲那些仍然面臨這個問題的人們提供我的兩分錢,特別是在使用MX列表和數據網格時,並且需要渲染器中的多行截斷。
據我所知,問題是關於MX組件,使用Spark將是一個不錯的選擇,但只有在可能的情況下。所以,如果「s:Label」不是選擇,我會認爲最好的方法是擴展MX Label組件,並將textField的多行屬性設置爲true。這應該做的伎倆,我首先嚐試添加更新的updateDisplayList方法的邏輯。
打開標籤代碼,找到截斷文本的代碼,然後在擴展文本的類中使用相同的方法。 – JeffryHouser 2010-11-29 13:26:08