Impostare la larghezza del componente Flex al 100% in fase di esecuzione?
-
20-08-2019 - |
Domanda
Se sto creando diciamo un campo di input attraverso MXML
, posso impostare la larghezza su 100%
. Ma non riesco a farlo in fase di esecuzione tramite ActionScript.
Funziona:
<mx:TextInput ... width="100%" />
Questo non verrà compilato, dice che la larghezza è un numero, non una stringa:
var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.width = "100%"
Come posso impostare <=> come dimensione su un componente creato in fase di esecuzione tramite ActionScript?
Soluzione
Devi solo usare l'attributo percentWidth
, invece dell'attributo width
.
Quindi, la terza riga nel tuo codice sarebbe:
textinp.percentWidth = 100;
Anche questo mi ha fatto inciampare per un po '.
Altri suggerimenti
Se in seguito desideri tornare alle larghezze basate su pixel per lo stesso componente, qui & # 8217; s cosa devi fare:
textinp.percentWidth = NaN;
La risposta sopra è corretta, ma non posso commentarla perché sono troppo nuovo per SO.
Quando vuoi aggiungere questa funzionalità a un componente personalizzato, puoi fare qualcosa del genere:
[PercentProxy("percentMultiplier")]
public function set multiplier(value:Number):void
{
_multiplier = value;
invalidSomethingOrDoSomething();
}
public function set percentMultiplier(value:Number):void
{
multiplier = value / 100;
}
Naturalmente, quando lo fai per larghezza, le sottoclassi del contenitore stanno cercando percentWidth e non ispezionano la metada, quindi non chiamarla widthInPercent o qualcosa del genere, anche se puoi.
Ecco la risposta:
var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.percentWidth = 100;