我在mxml中有一个Text元素。文本值正在根据用户操作进行更改。我想将宽度设置为文本的确切大小。由于width属性是实际组件的宽度,因此在触发FlexEvent.UPDATE_COMPLETE事件后我需要measuredWidth属性:
textField.addEventListener(FlexEvent.UPDATE_COMPLETE, function(e:FlexEvent):void{
textField.width = textfield.measuredWidth;
});
这仅在第一次更改为适当的宽度。之后它只能更小但不会更大。我已经阅读了Text和UIComponent源代码,它说我需要调用invalidateSize()。但它只有在我设置explicitWidth属性NaN时才有效。所以我做了一个setter函数:
function setText(newValue:String):void {
textField.text = newValue;
textField.explicitWidth = NaN;
textField.invalidateSize();
}
但它仍在缩小。我的问题是,如何在UPDATE_COMPLETE事件之后始终获得正确的measuredWidth值?
由于
答案 0 :(得分:1)
将Text元素更改为Label可解决问题。
答案 1 :(得分:0)
我同意一些评论者的观点,认为可能有更好的替代品可以达到相同的效果。但是,您可以使用Text元素的measureText函数来确定必要的宽度: