2009-06-25 19 views
9

Nếu tôi đang tạo một trường nhập thông qua MXML, tôi có thể đặt chiều rộng thành 100%. Nhưng tôi dường như không thể làm điều này trong thời gian chạy thông qua ActionScript.Đặt chiều rộng thành phần Flex thành 100% khi chạy?

này hoạt động:

<mx:TextInput ... width="100%" /> 

này sẽ không biên dịch, nói rộng là một con số, không phải là một chuỗi:

var textinp:TextInput = new TextInput(); 
someContainer.addChild(textinp); 
textinp.width = "100%" 

Làm thế nào tôi có thể thiết lập 100% như kích thước trên một thành phần tạo ra khi chạy qua ActionScript?

Trả lời

21

Bạn chỉ cần sử dụng thuộc tính percentWidth thay vì thuộc tính width.

Vì vậy, dòng thứ ba trong mã của bạn sẽ là:

textinp.percentWidth = 100; 

này vấp tôi dậy cho một lúc, quá.

+0

Cảm ơn, tôi biết nó phải là một cái gì đó đơn giản. Tôi hứa sẽ nghiên cứu các tài liệu một cách cẩn thận hơn vào lần sau, nhưng đôi khi nó dễ dàng bỏ lỡ những thứ được thừa hưởng từ các lớp UI cơ bản. – davr

3

Câu trả lời ở trên là đúng, nhưng tôi không thể nhận xét về nó coz Tôi quá mới so với SO.

Khi bạn muốn thêm chức năng này vào một thành phần tùy chỉnh, bạn có thể làm một cái gì đó như thế này:

[PercentProxy("percentMultiplier")] 
public function set multiplier(value:Number):void 
{ 
    _multiplier = value; 
    invalidSomethingOrDoSomething(); 
} 

public function set percentMultiplier(value:Number):void 
{ 
    multiplier = value/100; 
} 

Tất nhiên, khi bạn đang làm việc đó cho chiều rộng, các lớp con container đang tìm kiếm percentWidth và không kiểm tra metada, vì vậy đừng gọi số này là widthInPercent hoặc thứ gì đó, ngay cả khi bạn có thể.

1

Dưới đây là câu trả lời:

var textinp:TextInput = new TextInput(); 
someContainer.addChild(textinp); 
textinp.percentWidth = 100; 
10

Nếu sau này bạn muốn chuyển về độ rộng pixel dựa cho các thành phần tương tự, đây là những gì bạn phải làm:

textinp.percentWidth = NaN;