在网上查找了一些资料,有个方法是直接在DataGridColumn上设置width为小数,加起来必须等1,可是不起作用,不知道是什么原因,我用的是flex3
后来又找了一个方法,可以了,mark一下
//设置dataGrid表格的列宽
private function setColumnWidth():void{
var widthList:Array = [0.25,0.25,0.25,0.25];
dataGrid.validateNow();
var value:Number,display:DataGridColumn,i:int;
var list:Array = dataGrid.columns;
var length:int = list.length;
var dataWidth:int = 0;
//计算总列宽
for(i = 0; i < length; i ++){
display = list[i];
dataWidth += display.width;
}
//大于1,视为像素,按像素设置列宽,并从总列宽中减去;
for(i = 0; i < length; i ++){
display = list[i];
value = widthList[i];
if(value > 1){
dataWidth -= value;
display.width = int(value);
}
}
//小于1,视为百分比,按百分比设置列宽
for(i = 0; i < length; i ++){
display = list[i];
value = widthList[i];
if(value <= 1) display.width = int(dataWidth * value);
}
}