2009-06-25 13 views
9

Jeśli tworzę, powiedz pole wejściowe przez MXML, mogę ustawić szerokość na 100%. Ale nie mogę tego zrobić w środowisku wykonawczym za pośrednictwem ActionScript.Ustaw szerokość komponentu Flex na 100% w czasie wykonywania?

to działa:

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

To przyzwyczajenie kompilacji mówi szerokość jest liczbą, a nie ciąg:

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

Jak mogę ustawić 100% jak wielkość na składnik utworzonej w czasie wykonywania przez ActionScript?

Odpowiedz

21

Wystarczy użyć atrybutu percentWidth zamiast atrybutu width.

Tak, trzecia linia w kodzie byłoby:

textinp.percentWidth = 100; 

ten zadziałał mnie na chwilę, zbyt.

+0

Dzięki, wiedziałem musiało to być coś prostego. Obiecuję dokładniej przyjrzeć się dokumentom następnym razem, ale czasami łatwo jest przeoczyć rzeczy odziedziczone po podstawowych klasach UI. – davr

3

Powyższa odpowiedź jest prawidłowa, ale nie mogę tego skomentować, bo jestem zbyt nowa, aby SO.

Gdy chcesz dodać tę funkcjonalność do składnika niestandardowego, można zrobić coś takiego:

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

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

oczywiście, gdy robisz to dla szerokości, podklasy kontenerów szukasz percentWidth, i nie sprawdzaj metada, więc nie nazywaj tego widthInPercent czy coś, nawet jeśli możesz.

1

Oto odpowiedź:

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

Jeśli później chcesz powrócić do szerokości piksela oparte na tym samym składniku, oto co trzeba zrobić:

textinp.percentWidth = NaN;