2009-06-25 21 views
9

Wenn ich ein Eingabefeld über MXML sage, kann ich die Breite auf 100% setzen. Aber ich kann das nicht zur Laufzeit durch ActionScript tun.Setzen Sie die Flex-Komponentenbreite zur Laufzeit auf 100%?

Dies funktioniert:

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

Dies wird nicht kompilieren, sagt Breite eine Zahl ist, kein String:

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

Wie ich 100% wie die Größe auf einer Komponente zur Laufzeit erstellt einstellen kann über ActionScript?

Antwort

21

Sie müssen nur das percentWidth Attribut anstelle des width Attributs verwenden.

So würde die dritte Zeile im Code sein:

textinp.percentWidth = 100; 

Dieses ausgelöst mich für eine Weile bis auch.

+0

Danke, wusste ich, es musste etwas Einfaches sein. Ich verspreche, beim nächsten Mal die Dokumente genauer zu studieren, aber manchmal ist es einfach, Dinge zu übersehen, die von Basis-UI-Klassen geerbt wurden. – davr

3

Die obige Antwort ist korrekt, aber ich kann es nicht kommentieren, weil ich SO zu neu bin.

Wenn Sie diese Funktionalität zu einer benutzerdefinierten Komponente hinzufügen möchten, können Sie etwas tun:

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

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

Natürlich, wenn Sie es für Breite tun, werden die Container-Subklassen für suchen percentWidth, und überprüfen Sie nicht die Metada, also nennen Sie es nicht wideInPercent oder etwas, obwohl Sie können.

1

Hier ist die Antwort:

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

Wenn Sie später wieder auf pixelbasierten Breiten für die gleiche Komponente wechseln möchten, hier ist was Sie tun müssen:

textinp.percentWidth = NaN; 
Verwandte Themen