Apache flex 当运行时css更改时,Flex中的多行文本不会重新计算
出于加载时间的考虑,我在Flex应用程序中使用了一个运行时css文件 我的多行文本控件有问题:Apache flex 当运行时css更改时,Flex中的多行文本不会重新计算,apache-flex,runtime,stylesheet,Apache Flex,Runtime,Stylesheet,出于加载时间的考虑,我在Flex应用程序中使用了一个运行时css文件 我的多行文本控件有问题: <mx:Text id="txtDescription" selectable="false" styleName="imageRolloverButtonTextDark" width="100%" textAlign="center" text="{_rolloverText}"/> 当我的CSS样式表已正确加载时,文本样式将发生更改,但不会重新计算高度。它似乎只是一个单行字段
<mx:Text id="txtDescription" selectable="false"
styleName="imageRolloverButtonTextDark" width="100%" textAlign="center"
text="{_rolloverText}"/>
当我的CSS样式表已正确加载时,文本样式将发生更改,但不会重新计算高度。它似乎只是一个单行字段
仅供参考:控件实际上不可见,并由滚动触发。所以我并不在乎样式表是否没有加载,它们是否得到了标准的系统文本。我只是希望它加载后的高度是正确的。你能使用固定的像素宽度而不是100%吗?我以前遇到过在动态文本控件上错误计算100%的问题。你能用固定像素宽度代替100%吗?我以前遇到过动态文本控件100%计算错误的问题。根据Adobe文本文档 调整文本控件的大小 Flex可以调整 文本控件如下所示: 如果为两者指定像素值 高度和宽度属性,任何 超出文本大小的文本 控件在边界处被截断 如果指定显式像素 宽度,但没有高度,Flex包裹 文本以适应宽度并计算 适合所需数量的高度 一行行 如果指定基于百分比的 宽度和无高度,Flex不 换行文本,高度等于 所确定的行数 返回字符数 如果仅指定高度而不指定 宽度,则高度值不可用 影响宽度计算和弯曲 调整控件的大小以适合控件的宽度 最大行 一般来说,如果你有 文本,则应指定基于像素的 宽度属性。如果文本可能 更改,您希望确保 文本控件总是占用相同的空间 应用程序中的空间,设置 显式高度和宽度属性 这符合最大的预期文本 所以我用来处理这个问题的技巧是让文本通过绑定表达式从限制其宽度的容器(通常是直接的父容器)中获取其宽度 e、 g
根据Adobe文本文档 调整文本控件的大小 Flex可以调整 文本控件如下所示: 如果为两者指定像素值 高度和宽度属性,任何 超出文本大小的文本 控件在边界处被截断 如果指定显式像素 宽度,但没有高度,Flex包裹 文本以适应宽度并计算 适合所需数量的高度 一行行 如果指定基于百分比的 宽度和无高度,Flex不 换行文本,高度等于 所确定的行数 返回字符数 如果仅指定高度而不指定 宽度,则高度值不可用 影响宽度计算和弯曲 调整控件的大小以适合控件的宽度 最大行 一般来说,如果你有 文本,则应指定基于像素的 宽度属性。如果文本可能 更改,您希望确保 文本控件总是占用相同的空间 应用程序中的空间,设置 显式高度和宽度属性 这符合最大的预期文本 所以我用来处理这个问题的技巧是让文本通过绑定表达式从限制其宽度的容器(通常是直接的父容器)中获取其宽度 e、 g
对于其他任何有此问题的人,我找到的解决方案是创建一个扩展mx.controls.Text的自定义组件 然后重写styleChange()方法,并在应用样式后显式调用文本字段的invalidateDisplayList()方法 当样式发生更改时,应该自动调用它,但由于flex 3.5中的某些原因,它不是 公共类TextObject扩展了文本{/。。。 重写公共函数styleChanged(styleProp:String):void{invalidateDisplayList();} }
希望能节省一些我在这方面浪费的时间。对于其他任何有此问题的人,我找到的解决方案是创建一个扩展mx.controls.Text的自定义组件 然后重写styleChange()方法,并在应用样式后显式调用文本字段的invalidateDisplayList()方法 当样式发生更改时,应该自动调用它,但由于flex 3.5中的某些原因,它不是 公共类TextObject扩展了文本{/。。。 重写公共函数styleChanged(styleProp:String):void{invalidateDisplayList();} }
希望在我失去的所有时间里都能拯救一些人。我应该提到我已经尝试过了,但是没有,这个没有自己解决:-(我应该提到我已经尝试过了,但是没有,这个没有自己解决:-(
<mx:Canvas id="box" width="100%" backgroundColor="Red">
<mx:Text width="{box.width}" text="{someReallyLongString}" />
</mx:Canvas>