Pregunta

Aquí hay un problema con el que me encuentro:

Tengo muchas situaciones en las que necesito mostrar texto con un contenedor con el siguiente estilo:

<mx:Canvas>
     <mx:Text text="{text}" left="5" verticalCenter="0" right="5" />    
</mx:Canvas>

Como puede ver, el texto está restringido por los márgenes izquierdo y derecho del lienzo y no he especificado una altura para el control de texto porque quiero que crezca verticalmente cuando le agregue texto. La razón es que si hay una línea de texto, quiero que se muestre en el centro del lienzo, pero si hay dos o tres líneas de texto, quiero que el control de texto muestre esas dos o tres líneas de texto.

Sin embargo, lo que sigue sucediendo es que solo mostrará una línea de texto, sin importar cuántas veces llame a invalidateSize () en él o en el contenedor. ¿Qué hago?

CAVEAT: el alto y el ancho del lienzo lo establece el componente que lo instancia (todo esto está envuelto en un componente personalizado), por lo que no puedo establecer explícitamente el ancho o la altura del control de texto ...

NOTA: Ok, ¿tal vez sea una solución fácil porque mientras escribía esta pregunta la resolví, pero, esta es una oportunidad para responder una pregunta fácil?

¿Fue útil?

Solución

El componente de texto necesita un ancho si desea que se ajuste automáticamente. Si utilizó una cadena con nuevas líneas, crecerá como esperaba sin un ancho. Para usted, use:

Editar: Ok, quieres que esté centrado en un lienzo de diferentes tamaños. Entonces puedes:

<mx:HBox 
    width="500"
    paddingLeft="5"
    paddingRight="5">
    <mx:Spacer width="100%" />
    <mx:Text 
        width="100%"
        text="{text}" />
    <mx:Spacer width="100%" />
</mx:HBox>

Otros consejos

Eche un vistazo al componente TextArea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top