Tôi đang điền một dropDownList với mảngCollection của chuỗi. Tôi muốn chiều rộng của điều khiển danh sách thả xuống để phù hợp với kích thước (tính bằng pixel) của chuỗi dài nhất trong bộ sưu tập mảng. Vấn đề tôi đang gặp phải là: chiều rộng phông chữ của các chuỗi trong bộ sưu tập khác nhau, ví dụ: 'W' trông rộng hơn 'l'. Vì vậy, tôi ước tính chiều rộng của một nhân vật là 8 pixel nhưng đó không phải là khá gọn gàng. Nếu một chuỗi có nhiều 'W' và 'M' gặp phải, ước tính sai. Vì vậy, tôi muốn chiều rộng pixel chính xác của chuỗi. Làm thế nào tôi có thể nhận được độ dài chính xác của một chuỗi bằng pixel ??Độ dài của một chuỗi theo pixel
Giải pháp của tôi rằng ước tính tất cả các nhân vật là 8 pixels rộng được đưa ra dưới đây:
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);
}
Bất kỳ ý tưởng hoặc giải pháp được đánh giá cao.
Cảm ơn
@Rose kích thước không đồng bộ, do đó bạn phải ép buộc xác thực – shaunhusain
Tuyệt vời! Tôi thích giải pháp; Tôi đã có một vấn đề nhỏ. Nó không nhận được chiều rộng pixel đúng. Tôi đã cho nó chuỗi này trong mảng. var strings: Array = ["a", "hươu cao cổ", "foo", "Đối tượng ArrayCollection không đại diện cho bất kỳ"]; Bây giờ nó có độ rộng văn bản là 245 nhưng trên thực tế kích thước là 276. Vì vậy, một thanh cuộn hiển thị trên danh sách thả xuống của tôi.Từ mã của bạn, tôi đã xóa phần có textFormat, vì vậy tôi đã thực hiện chức năng measureStr một hàm đối số – Rose
@Rose: TextFormat ảnh hưởng đến phông chữ (-face và -family) được sử dụng khi đo văn bản - nó phải được thay đổi khớp với danh sách thả xuống chính xác (mặc dù tôi không chắc đó là gì). Sau khi loại bỏ các công cụ textFormat, nó có cho độ dài phù hợp không? Nếu vậy, tôi nghi ngờ đó là vì định dạng văn bản mặc định giống với những gì đang được sử dụng trong danh sách thả xuống. – Cameron