MyTextArea.as
package myComponents
{
// Flex组件TextArea 的静态大小为100 像素宽,44 像素高,而不管它所包含的文本什么样。
// 如果文本比TextArea 控件大,控件就显示滚动条。
// 在下面的例子中,重载了TextArea 控件的measure()方法,这样它就能够检测传递给控件的文本,
// 以及计算TextArea 控件的缺省大小,以使它能在一行中显示整个文本字符串.
import mx.controls.TextArea;
import flash.text.TextLineMetrics;
public class MyTextArea extends TextArea
{
public function MyTextArea()
{
super();
}
override protected function measure():void
{
super.measure();
var lineMetrics:TextLineMetrics = measureText(text);
//默认大小和默认最小大小为原有宽度加10像素
measuredWidth = measuredMinWidth = lineMetrics.width + 10;
measuredHeight = measuredMinHeight = lineMetrics.height + 10;
}
}
}
MyTextAreaDemo.mxml
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:myComponents="myComponents.*"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <myComponents:MyTextArea x="325" y="203" text="这些方法,然后在设置icon属性后又执行一次这些方法.程序更改字体大小的执行速度大大快于Flex 更新应用的速度,"/> </s:Application>
重写效果: