Ich fülle ein Drop-Down-Listenfeld mit einer ArrayCollection von Zeichenfolgen. Ich möchte, dass die Breite des Dropdown-Listenfelds mit der Größe (in Pixeln) der längsten Zeichenfolge in der ArrayCollection übereinstimmt. Das Problem, dem ich gegenüberstehe, ist folgendes: Die Schriftbreite der Zeichen in der Sammlung ist unterschiedlich, z. B. sieht 'W' breiter aus als 'l'. Also schätze ich die Breite eines Zeichens auf 8 Pixel, aber das ist nicht sehr genau. Wenn eine Zeichenfolge mit vielen 'W' und 'M' vorkommt, ist die Schätzung falsch. Also möchte ich die genaue Pixelbreite von Zeichenfolgen haben. Wie kann ich die genaue Länge einer Zeichenfolge in Pixeln erhalten??
Meine Lösung, die alle Zeichen auf 8 Pixel breit schätzt, ist nachstehend angegeben:
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="Auswählen ...";
customDropDownList.labelField="Antwortoptionen:";
//Berechnung der maximalen Breite
var componentWidth=10; //Standardwert
for each(var answerText in array){
Alert.show("Txt Größe: "+ answerText.length + " pixel: " + answerText.length*9);
if(answerText.length * 8 > componentWidth){
componentWidth=answerText.length * 8;
}
}
customDropDownList.width=componentWidth;
answers.addChild(customDropDownList);
}
Jeder Vorschlag oder Lösung ist sehr geschätzt.
Danke