El texto de la línea múltiple en Flex no se vuelve a calcular cuando se cambia el tiempo de ejecución CSS -- apache-flex campo con runtime campo con stylesheet camp Relacionados El problema

Multi line text in Flex doesnt recalculate when runtime css is changed


0
vote

problema

Español

Para las consideraciones de tiempo de carga, estoy usando un archivo CSS de tiempo de ejecución en mi aplicación FLEX.

Estoy teniendo un problema con un control de texto multi línea:

  class A:     def __init__(N, M):         self.N=N         self.M=M     def method1(self):         ... 2  

Cuando mi CSS Stylesheet ha cargado el estilo de texto correctamente cambia, pero la altura no se recalcula. Parece ser solo un campo de una sola línea.

FYI: El control no es realmente visible, y se desencadena por un rollover. Así que realmente no me importa si la hoja de estilo no se ha cargado y obtienen texto de sistema estándar. Quiero que sea la altura correcta cuando se ha cargado.

Original en ingles

For loading time considerations I am using a runtime css file in my Flex Application.

I am having a problem with a multi line text control :

<mx:Text id="txtDescription" selectable="false" styleName="imageRolloverButtonTextDark" width="100%" textAlign="center" text="{_rolloverText}"/> 

When my CSS stylesheet has loaded the text style correctly changes, but the height is not recalculated. It appears to be just a single line field.

FYI: The control is not actually visible, and triggered by a rollover. So I dont really care if the stylesheet hasnt loaded and they get standard system text. I jsut want it to be the correct height when it has been loaded.

        

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Para cualquier otra persona que tenga este problema, la solución que encontré fue crear un componente personalizado que extiende el MX.CONTROLS.TEXT

y luego anule el método Stylechange () y llame explícitamente el método InvalidAdItPlayList () para el campo de texto una vez que se haya aplicado el estilo.

Se debe llamar automáticamente cuando el styleis cambió, pero no ... por alguna razón en Flex 3.5 no lo es.

La clase pública textObject extiende el texto {// ... Anular la función pública Stylechanged (StyleProp: String): Void {InvalidAdisplayList (); } }

Espero que ahorre a alguien todo el tiempo que perdí en él.

 

For any one else who has this problem, The solution I found was to create a custom component extending the mx.controls.Text

and then override the styleChange() Method, and explicitly call the invalidateDisplayList() method for the text field once the style has been applied.

It should be called automatically when the styleis changed but no...for some reason in flex 3.5 it is not.

public class TextObject extends Text { //... override public function styleChanged(styleProp:String):void { invalidateDisplayList(); } }

Hope that save some one all the time I lost on it.

 
 
3
 
vote

por la documentación de Adobe para texto

dimensionar un control de texto

Tallas flexibles del Control de texto de la siguiente manera:

Si especifica un valor de píxel para ambos Las propiedades de altura y anchura, cualquier Texto que excede el tamaño de la El control se recorta en la frontera.

Si especifica un píxel explícito Ancho, pero sin altura, Flex envuelve la Texto para adaptarse al ancho y calcula. la altura para que se ajuste al número requerido de líneas.

Si especifica un porcentaje basado en Ancho y sin altura, Flex no envolver el texto, y la altura es igual a el número de líneas según lo determinado por el número de caracteres de retorno.

Si especifica solo una altura y no Ancho, el valor de altura no Afecta el cálculo del ancho, y Flex. Tamaños el control para adaptarse al ancho de la línea máxima.

como regla general, si tienes mucho tiempo Texto, debe especificar un píxelado. propiedad de ancho. Si el texto podría cambia y quieres asegurarte de que la El control de texto siempre toma lo mismo. espacio en su aplicación, set Propiedades explícitas de altura y anchura. que se ajusta al texto más grande esperado.

Por lo tanto, el truco con el que he usado para lidiar esto es para que el texto obtenga su ancho a través de una expresión de unión de cualquier contenedor que limite su ancho, generalmente el padre inmediato.

e.g.

  <mx:Canvas id="box" width="100%" backgroundColor="Red">     <mx:Text width="{box.width}" text="{someReallyLongString}" /> </mx:Canvas>   
 

Per the Adobe documentation for Text

Sizing a Text control

Flex sizes the Text control as follows:

If you specify a pixel value for both the height and width properties, any text that exceeds the size of the control is clipped at the border.

If you specify an explicit pixel width, but no height, Flex wraps the text to fit the width and calculates the height to fit the required number of lines.

If you specify a percentage-based width and no height, Flex does not wrap the text, and the height equals the number of lines as determined by the number of Return characters.

If you specify only a height and no width, the height value does not affect the width calculation, and Flex sizes the control to fit the width of the maximum line.

As a general rule, if you have long text, you should specify a pixel-based width property. If the text might change and you want to ensure that the Text control always takes up the same space in your application, set explicit height and width properties that fit the largest expected text.

So the trick I've used to deal with this is to have the Text get its width via a binding expression from whatever container limits it's width, typically the immediate parent.

e.g.

<mx:Canvas id="box" width="100%" backgroundColor="Red">     <mx:Text width="{box.width}" text="{someReallyLongString}" /> </mx:Canvas> 
 
 
0
 
vote

¿Podría usar un ancho de píxel fijo en lugar del 100%? He tenido problemas con el 100% que se calcula erróneamente en los controles de texto dinámicos antes.

 

Could you use a fixed pixel width instead of 100%? I've had issues with 100% being wrongly calculated on dynamic text controls before.

 
 
 
 

Relacionados problema

1  ¿Cómo creo un sindicato de clase CSS?  ( How do i create a css class union ) 
Tengo un div que las clases de los sindicatos CSS como tal: <div id="tp" class="ui-hidden-on-load ui-tablepicker ui-widget ui-widget-content ui-helper-...

0  Manera correcta de usar múltiples hojas de estilos ... ¿Entonces funciona?  ( Proper way to use multiple stylesheets so it works ) 
Estoy haciendo un sitio donde necesito tener estilos separados para diseño, colores y tipografía. Así que básicamente tomé mi hoja de estilo principal y acaba...

2  ASP.NET Derivado Páginas Masteres, Títulos de páginas y enlaces CSS dinámicos  ( Asp net derived master pages page titles and dynamic css links ) 
No estoy seguro de si la página derivada es realmente relevante para el problema aquí, pero se encontró con una interesante Gotcha en algún código que estoy t...

4  Personalización del control de la pestaña en Stylesheet en QT  ( Customizing tab control in stylesheet in qt ) 
Me gustaría hacer cambios solo para una pestaña específica. ¿Cómo puedo hacerlo? He intentado ambos: QTabBar::tab#tbGeneral{... } QTabWidget::tab-bar#t...

0  Es decir, la hoja de estilos condicionales no funciona  ( Ie conditional stylesheet not working ) 
Hay un montón de material de lectura cuando google, algo así como ", es decir, hoja de estilo separada", pero no muchos ejemplos. Tengo los siguientes CSS c...

1  Ruby on Rails Stylesheet Rendering Files y Application.css con CSS comunes  ( Ruby on rails stylesheet rendering files and application css with common css ) 
Me pregunto qué es para hacerlo application.css Si estoy creando un nuevo archivo para header y footer para que todas mis páginas puedan incluir heade...

34  "La hoja de estilo no se cargó porque su tipo MIME," Texto / HTML "no es" Texto / CSS "[CERRADO]  ( The stylesheet was not loaded because its mime type text html is not text c ) 
cerrado. Esta pregunta es no reproducible o fue causado por tipográficos . Actualmente no está aceptando respuestas. ...

1  CAMBIAR STYLESHEET VIVO SI EN PHP  ( Change stylesheet via if in php ) 
En el momento en que estoy tratando de usar una hoja de estilo que recibo a través de unif. Pero no hace nada. Aquí está mi código en este momento. La varia...

0  ¿Cómo forzar la actualización de los cambios de diseño a los clientes usando xpages?  ( How to force update of design changes to clients using xpages ) 
Estoy acumulando una página web con XPages y estoy haciendo cambios constantes en la secuencia de comandos y el diseño, esto incluye tanto el servidor como el...

1  Añadir hojas de estilo a rieles HTML estático  ( Add stylesheets to rails static html page ) 
Tengo algunas páginas HTML estáticas en My Rails Project. Necesitan acceso a hojas de estilo en mi carpeta de activos de vendedores. ¿Cómo puedo agregar las r...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos