2009-06-25 46 views
9

如果我通過MXML創建輸入字段,則可以將寬度設置爲100%。但我似乎無法通過ActionScript在運行時執行此操作。在運行時將Flex組件寬度設置爲100%?

這工作:

<mx:TextInput ... width="100%" /> 

這不會編譯,說寬度是一個數字,而不是字符串:

var textinp:TextInput = new TextInput(); 
someContainer.addChild(textinp); 
textinp.width = "100%" 

如何設置100%在運行時通過創建一個組件的大小ActionScript中?

回答

21

您只需使用percentWidth屬性,而不是width屬性。

所以,在你的代碼的第三行是:

textinp.percentWidth = 100; 

這絆倒了我一段時間了。

+0

謝謝,我知道它必須是簡單的東西。我保證下次更仔細地研究文檔,但有時很容易遺漏從基本UI類繼承的東西。 – davr 2009-06-25 21:58:14

3

以上答案是正確的,但我不能評論它因爲我太新了。

當你想添加此功能的自定義組件,你可以做這樣的事情:

[PercentProxy("percentMultiplier")] 
public function set multiplier(value:Number):void 
{ 
    _multiplier = value; 
    invalidSomethingOrDoSomething(); 
} 

public function set percentMultiplier(value:Number):void 
{ 
    multiplier = value/100; 
} 

當然,當你這樣做的寬度,集裝箱子正在尋找percentWidth,並且不檢查metada,所以不要叫它widthInPercent什麼的,即使你可以。

1

下面是答案:

var textinp:TextInput = new TextInput(); 
someContainer.addChild(textinp); 
textinp.percentWidth = 100; 
10

如果以後要切換回基於像素的寬度爲相同的組件,這裏是你必須做的:

textinp.percentWidth = NaN; 
相關問題