Я заполняю dropDownList набором строк arrayCollection. Я хочу, чтобы ширина раскрывающегося списка соответствовала размеру (в пикселях) самой длинной строки в коллекции массива. Проблема, с которой я столкнулся, заключается в следующем: ширина шрифта строк в коллекции отличается, например, «W» выглядит шире, чем «l». Поэтому я оценил ширину символа в 8 пикселей, но это не очень удобно. Если встречается строка, в которой много «W» и «M», оценка неверна. Поэтому мне нужна точная ширина строк в пикселях. Как я могу получить точную длину строки в пикселях?
Мое решение, оценивающее ширину всех символов как 8 пикселей, приведено ниже:
public function populateDropDownList():void{
var array:Array = new Array("o","two","three four five six seven eight wwww");
var sampleArrayCollection:ArrayCollection = new ArrayCollection(array);
var customDropDownList:DropDownList = new DropDownList();
customDropDownList.dataProvider=sampleArrayCollection;
customDropDownList.prompt="Select ...";
customDropDownList.labelField="Answer Options:";
//calculating the max width
var componentWidth=10; //default
for each(var answerText in array){
Alert.show("Txt size: "+ answerText.length + " pixels: " + answerText.length*9);
if(answerText.length * 8 > componentWidth){
componentWidth=answerText.length * 8;
}
}
customDropDownList.width=componentWidth;
answers.addChild(customDropDownList);
}
Любая идея или решение высоко ценится.
Спасибо