Flex:检测文本何时适合和不适合`mxTextArea`

时间:2015-08-24 18:18:43

标签: flex layout flex3

我的底线问题是,我需要TextArea长达2行以容纳大量文本,然后在不需要2时缩小到1行。答案应该是显而易见的,对吧?

private function OnScroll(evt:ScrollEvent):void {
  if (!isNaN(evt.position)) DoWhatNeedsDoneWhenAScrollAppears();
}

...

<mx:TextArea scroll="OnScroll(event)" />

这样,当文本中的文本多于控件中的文本时,应该会出现一个滚动条,我知道我需要2行。不幸的是,当我向text成员分配文字时,这不起作用,而且我也没有看到任何检测隐藏文字的方法。 我也试过了:

public override function set text(s:String):void {
    super.text = s;
    invalidateSize();
    invalidateDisplayList();
    invalidateProperties();
}

当然,即使我解决了这个问题,我也不知道什么时候收线,我不知道除非文本是空字符串。

我使用的是Flex 3.5 SDK。

1 个答案:

答案 0 :(得分:0)

到目前为止我的解决方案是使用measureText()。每当更改文本时(通过覆盖text集或通过处理change事件),我会看到measuredText()是否表示字符串比控件宽,在这种情况下我创建{ {1}}两倍高。至少我尝试,直到我看到TextArea对于那种事情是多么不可靠。现在,如果measureText()表示文本是控件宽度的95%,我的高度加倍。并且,它仍然是不可靠的,但是较小或2个邪恶。