Flash 更改文本';s文本并在Flex中获取测量宽度
我在mxml中有一个文本元素。文本值正在由用户操作更改。我想将宽度设置为文本的精确大小。由于width属性是实际组件的宽度,因此触发FlexEvent.UPDATE_COMPLETE事件后,我需要measuredWidth属性:Flash 更改文本';s文本并在Flex中获取测量宽度,flash,apache-flex,Flash,Apache Flex,我在mxml中有一个文本元素。文本值正在由用户操作更改。我想将宽度设置为文本的精确大小。由于width属性是实际组件的宽度,因此触发FlexEvent.UPDATE_COMPLETE事件后,我需要measuredWidth属性: textField.addEventListener(FlexEvent.UPDATE_COMPLETE, function(e:FlexEvent):void{ textField.width = textfield.measuredWidth; }); 这
textField.addEventListener(FlexEvent.UPDATE_COMPLETE, function(e:FlexEvent):void{
textField.width = textfield.measuredWidth;
});
这仅在第一次更改为正确的宽度。之后,它只能变小,不能变大。我已经阅读了文本和UIComponent源代码,它说我需要调用invalidateSize()。但只有当我将explicitWidth属性设置为NaN时,它才起作用。所以我做了一个setter函数:
function setText(newValue:String):void {
textField.text = newValue;
textField.explicitWidth = NaN;
textField.invalidateSize();
}
但它仍然只是在缩小。我的问题是,如何在UPDATE_COMPLETE事件之后始终获得正确的measuredWidth值
谢谢我同意一些评论者的观点,也许有更好的替代方案可以达到同样的效果。但是,您可以使用文本元素的函数来确定所需的宽度:将文本元素更改为标签可以解决问题。只是好奇为什么需要此属性?也许你正在试图解决一些可以用其他方法解决的问题?我真正需要的是将文本元素的大小与内容文本的大小相适应,使其始终保持相同的宽度。有更好的实践吗?我说得对吗?您需要
文本
控件更改高度以适应所有文本?宽度是我想要的。它总是一行,我需要它显示在一行。哦,对了:)它与标签完美配合,谢谢!我知道,但正如我所说的,如果测量的宽度比以前小,它就会工作。对我来说,它只在第一盘时设置正确。从那以后就不可靠了。