2011-05-01 54 views
0

我在mxml中有一個Text元素。文本值正在由用戶操作改變。我想將寬度設置爲文本的確切大小。由於寬度屬性是實際組件的寬度,我需要的measuredWidth屬性觸發FlexEvent.UPDATE_COMPLETE事件之後:以適當的寬度在第一時間更改文本的文本並在Flex中獲取measuredWidth

textField.addEventListener(FlexEvent.UPDATE_COMPLETE, function(e:FlexEvent):void{ 
    textField.width = textfield.measuredWidth; 
}); 

這隻變化。之後,它只能更小,但不能更大。我讀過Text和UIComponent源代碼,它說我需要調用invalidateSize()。但它只適用於如果我設置explicitWidth屬性NaN。所以我做了setter功能:

function setText(newValue:String):void { 
    textField.text = newValue; 
    textField.explicitWidth = NaN; 
    textField.invalidateSize(); 
} 

但它仍然只是在縮小。我的問題是,如何在UPDATE_COMPLETE事件後始終獲得正確的measuredWidth值?

感謝

+0

只是好奇你爲什麼需要這個屬性?也許你正試圖解決一些可以通過其他方式解決的問題? – Constantiner 2011-05-01 19:01:28

+0

我真正需要的是將文本元素大小應用到內容文本的大小,所以它始終是相同的寬度。有更好的做法嗎? – itarato 2011-05-01 19:17:20

+0

我是否對,您需要使用「文本」控件來更改高度以適合所有文本? – Constantiner 2011-05-01 19:21:34

回答

1

將文本元素更改爲標籤可解決問題。

0

我與一些評論者都認爲有可能是達到同樣效果更好的替代品。但是,您可以使用Text元素的measureText函數來確定必要的寬度:

+0

我知道,但正如我所說,它的工作原理是如果measuredWidth是一個比以前更小的值。對我而言,它只能在第一組中正確設置。從那以後它不可靠。 – itarato 2011-05-02 07:32:24