2009-10-12 17 views
5

Una vez que haya configurado la propiedad width o percentWidth en una etiqueta flexible, ¿hay alguna manera de restablecer el ancho a su valor predeterminado (es decir, el ancho del texto más el relleno)?Restablecer un ancho de etiqueta flexible a "auto" después de establecer un ancho explícito?

Uso la etiqueta como procesador. En algunos casos, me gustaría que se ajuste automáticamente al tamaño del texto, y en otros casos, me gustaría que sea un porcentaje de ancho de su contenedor. Obviamente, podría usar dos etiquetas separadas, una para cada uno de los casos anteriores, pero tengo curiosidad si es posible restablecer la etiqueta a su comportamiento predeterminado.

Respuesta

8
label.width = NaN; 
//not sure if the following lines are required 
label.invalidateSize(); 
label.width = label.measuredWidth; 

De flex livedocs

Cuando se establece una determinada altura y la anchura de un componente, Flex no llama al método de medida(), incluso si se llama explícitamente el método invalidateSize(). Es decir, Flex solo llama al método measure() si la propiedad explicitWidth o la propiedad explicitHeight del componente es NaN.

+0

Esto funcionó para mí, sin necesidad de la llamada invalidateSize o la asignación a measuredWidth. Había visto esa cita de los documentos, pero todavía no entendí (y todavía no lo hago) la relación entre las propiedades width y/o percentWidth y explicitWidth. –

+0

Según tengo entendido, 'explicitWidth' es el ancho de la parte visible del componente. Aparecerán barras de desplazamiento si el ancho real es mayor que este valor. Es el ancho explícitamente especificado (por el programador) de un componente. Si establece el ancho, se le asigna el mismo valor a la propiedad explicitWidth explícita y si especifica percentWidth, el ancho calculado (en función del tamaño del elemento principal) se utiliza como explicitWidth. – Amarghosh

1

establecer el ancho a indefinido:

yourLabelId.width = indefinido;

+3

Como el ancho no se escribe como *, indefinido se convertirá en nulo. En realidad, podría terminar siendo NaN cuando se pase su nueva altura a donde está almacenada (ancho explícito, creo). – joshtynjala

+0

Configurar mi ancho como indefinido pareció funcionar, pero estoy de acuerdo en que NaN es más limpio (poco a poco estoy aprendiendo el sistema de tipo ActionScript). Si esta respuesta se edita (s/undefined/NaN/g), la dejaré "aceptada", ya que me puso en funcionamiento rápidamente. –

+0

Como nota al margen, vale la pena mencionar que si configuré el percentWidth, establecer el ancho en NaN no tiene ningún efecto. La propiedad que modifiqué originalmente debe establecerse en NaN para restablecer la etiqueta a su ancho predeterminado (medido). Eso es probablemente obvio, pero potencialmente confuso. –

Cuestiones relacionadas