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>
重寫效果: