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