字符串所占实际宽度
??????? 在很多自定义的组件中需要动态的计算字符串的实际宽度,如果字符串都是汉字那么可以利用String.length*汉字大小,但是在实际的应用中中英文相结合是很常见的事情。
??????? 案例如下:
???????
?
?? TileList 的数据源是动态的,因此每行显示的列数也是动态的,这就需要动态的计算columnWidth,
?? columnWidth=字符串所占最大实际宽度+其他组件的宽度。
?? 笔者第一次计算的时候就犯了一个错误,首先计算出字符串所占得字节数,一个汉字占2个字节,然后总的字节数*字体大小。
?? 计算一个字符串所占的字节数长度如下:
??
?
?
有关详细信息请自己参考API.
measureText(字符串)方法返回TextLineMetrics的实例,TextLineMetrics类的width返回字符串所占的实际宽度,Flex的显示组件一般都继承自UIComponent组件,UIComponent类含有measureText方法,因此可以直接使用this.measureText(字符串).
?
?
var maxStrLength:int=0;//最大宽度for(var i:int=0;i<ac.length;i++){var item:Object=ac.getItemAt(i);item.name= item[param.name];var objLen:int=this.measureText(item.name).width; if(objLen>maxStrLength){maxStrLength=objLen;}if(isFirst){item.sel=false;}ac.setItemAt(item,i);}?
?