2009-02-11 63 views
32

我創建了一個Adobe Flex應用程序,並且我有一個文本控件(mx:Text),當您需要多行不可編輯文本時(與標籤相反,這是單行不可編輯的文本)。當我將瀏覽器窗口調整爲小於文本的大小時(或者瀏覽器窗口已經小了),我的文本控件不會打包。在諮詢我發現的this doc後,似乎只有在指定像素的絕對寬度時纔會出現單詞封裝功能。這正是我想要避免的。我希望文本可以包裹到適合我的Flash對象的大小內,以便它始終可見......有什麼方法可以通過我缺少的一些屬性或可能是不同的控件來完成此操作?謝謝。如何讓自定義文本控件自動換行

回答

0

您可以嘗試向Event.RESIZE的父節點添加事件處理程序,並調用Text對象的validateNow()方法。 (可能在撥打invalidateSize()之前。)爲什麼這不會自動發生,我不知道。

5

百分比寬度和高度實際上會解析爲它們的像素等效值,因此使用它們應該可以實現您要查找的包裝和相對大小。例如:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%"> 
    <mx:Text width="100%" height="100%" text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." /> 
</mx:Application> 

也就是說,只要有任何形式的寬度設置,相對大小(一個明確的數字,百分比,基於約束的錨 - 例如,上,右,下,左 - 等等)應該導致文本自然地包裝。這種方法不適用於您使用的佈局嗎?沒有一些代碼,很難說,但你是對的 - 包裝確實需要在容器上設置寬度相關的屬性。

調整大小和包裝可能有點棘手,雖然取決於上下文,所以如果您發現這不起作用,請嘗試發佈一些代碼 - 我相信我們其中一個人將能夠幫助您出來。

25

我有這個相同的問題。在我的情況下,我有一個mx:Text塊(應該包裝),並且mx:Text對象嵌入到TWO mx:VBox容器中。

,我得到了成功地自動換行的唯一辦法是做以下兩項操作:

  1. 把「WIDTH =‘100%’的財產到每個VBox容器(其中MX:文本居住)。
  2. 把「WIDTH =‘100%’的財產爲每一MX:文本對象(駐留在此築巢垂直框的範圍內)

非常不直觀,但是這是對我工作。

我希望這可以幫助你!

喬恩Kinsting

+1

啊哈。我剛剛遇到了同樣的問題,即通過同樣的方法解決了這個問題 - 在三種情況下明確設置寬度 - 外框,內框和Text對象。 – user8032 2009-04-07 05:42:02

0

我認爲施加垂直框寬度= 「100%」 和文本寬度= 「100%」 是最簡單的方法。注意:如果文本是動態生成的,不要忘記做text.percentWidth = 100

0

所以Christian只是一個帶有Text元素的應用程序的例子,但它太容易搞亂了佈局。只需添加一個垂直框其間,裝箱確實工作:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%"> 
<mx:VBox width="100%"> 
    <mx:Text width="100%" height="100%" text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />  
</mx:VBox> 
</mx:Application> 
+0

奇怪..如果您從文本中刪除高度=「100%」,它會工作... – Tom 2010-03-23 13:04:05

-4
render="invalidateSize();validateNow(); 
'component id'.mx_internal::getTextField().wordWrap=true" 

添加到您的文本組件。

4

如果你試圖讓文本換行到MXML組件內部工作試試這個:

<mx:Text id="testText" 
    width="{ this.width }" 
    height="100%" 
    text="Your text here" /> 

你基本上設置寬度與組件的寬度和高度設置爲100%將允許它在縮小尺寸時正確包裝。

-2

我可以使用只有mxml。結果很難看,但我可以做到。

<s:Group id="propDisplay" width="100%"> 
    <mx:Text id="key" left="0" text="{data.key}:"/> 
    <mx:Text left="{key.width}" maxWidth="{propDisplay.width - key.width}" 
          text="{data.value}" /> 
</s:Group> 
-1

嘗試在文本字段中設置htmlText =「true」。