2009-06-25 10 views
9

Si estoy creando un campo de entrada a través de MXML, puedo establecer el ancho en 100%. Pero parece que no puedo hacer esto en tiempo de ejecución a través de ActionScript.Establezca el ancho del componente Flex en 100% en el tiempo de ejecución?

Esto funciona:

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

Esta costumbre de compilación, dice ancho es un número, no una cadena:

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

¿Cómo puedo configurar 100% como el tamaño de un componente creado en tiempo de ejecución a través de ¿ActionScript?

Respuesta

21

Solo necesita usar el atributo percentWidth, en lugar del atributo width.

Por lo tanto, la tercera línea en el código sería:

textinp.percentWidth = 100; 

Esto me hizo tropezar por un tiempo, también.

+0

Gracias, sabía tenía que ser algo simple. Prometo estudiar los documentos con más cuidado la próxima vez, pero a veces es fácil perder cosas heredadas de las clases de UI básicas. – davr

3

La respuesta anterior es correcta, pero no puedo comentar sobre ella porque soy demasiado nuevo para SO.

Cuando desea agregar esta funcionalidad a un componente personalizado, puede hacer algo como esto:

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

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

Por supuesto, cuando lo estás haciendo para la anchura, las subclases de contenedores están buscando percentWidth, y no inspeccione el metada, así que no lo llame widthInPercent o algo así, aunque pueda.

1

Aquí está la respuesta:

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

Si más adelante desea volver a anchuras basadas en píxeles para el mismo componente, esto es lo que tiene que hacer:

textinp.percentWidth = NaN; 
Cuestiones relacionadas