2009-10-12 44 views
5

Khi tôi đã đặt thuộc tính width hoặc percentWidth trên nhãn flex, có cách nào để đặt lại chiều rộng về độ rộng mặc định (tức là chiều rộng của văn bản cộng với đệm) không?Đặt lại chiều rộng nhãn flex thành "tự động" sau khi đặt chiều rộng rõ ràng?

Tôi đang sử dụng nhãn làm trình kết xuất đồ họa. Trong một số trường hợp, tôi muốn nó tự động kích thước văn bản và trong các trường hợp khác, tôi muốn nó có chiều rộng phần trăm của vùng chứa. Rõ ràng, tôi có thể sử dụng hai nhãn riêng biệt, một cho mỗi trường hợp trên, nhưng tôi tò mò nếu có thể đặt lại nhãn về hành vi mặc định của nó.

Trả lời

8
label.width = NaN; 
//not sure if the following lines are required 
label.invalidateSize(); 
label.width = label.measuredWidth; 

Từ flex livedocs

Khi bạn thiết lập một chiều cao cụ thể và chiều rộng của một thành phần, Flex không gọi phương thức đo lường(), ngay cả khi bạn rõ ràng gọi phương thức invalidateSize(). Nghĩa là, Flex chỉ gọi phương thức measure() nếu thuộc tính clearWidth hoặc thuộc tính explicitHeight của thành phần là NaN.

+0

Điều này làm việc cho tôi, mà không cần cuộc gọi invalidateSize hoặc chuyển nhượng đến measureWidth. Tôi đã nhìn thấy câu nói đó từ các tài liệu, nhưng tôi chưa (và vẫn có thể không) hiểu mối quan hệ giữa các thuộc tính width và/hoặc percentWidth và clearWidth. –

+0

Sự hiểu biết của tôi là 'explicitWidth' là chiều rộng của phần hiển thị của thành phần. Các thanh cuộn sẽ xuất hiện nếu chiều rộng thực tế lớn hơn giá trị này. Đó là chiều rộng được xác định rõ ràng (bởi lập trình viên) của một thành phần. Nếu bạn đặt chiều rộng, cùng một giá trị được gán cho thuộc tính explicitWidth và nếu bạn chỉ định percentWidth, chiều rộng được tính toán (dựa trên kích thước của cha mẹ) được sử dụng như explicitWidth. – Amarghosh

1

Đặt chiều rộng thành không xác định:

yourLabelId.width = undefined;

+3

Vì chiều rộng không được nhập là *, không xác định thực sự sẽ được chuyển đổi thành không. Nó thực sự có thể kết thúc là NaN vào thời điểm chiều cao mới của bạn được chuyển đến nơi nó được lưu trữ (clearWidth, tôi tin). – joshtynjala

+0

Đặt chiều rộng của tôi thành không xác định dường như hoạt động, nhưng tôi đồng ý rằng NaN sạch hơn (Tôi đang dần dần học hệ thống kiểu ActionScript). Nếu câu trả lời này được chỉnh sửa (s/undefined/NaN/g), tôi sẽ để nó "được chấp nhận" vì nó giúp tôi và chạy nhanh. –

+0

Là một lưu ý phụ, điều đáng nói đến là nếu tôi đã đặt percentWidth, thì việc đặt chiều rộng thành NaN sẽ không có hiệu lực. Thuộc tính tôi đã sửa đổi ban đầu phải được đặt thành NaN để đặt lại nhãn thành chiều rộng mặc định (được đo) của nó. Điều đó có thể hiển nhiên, nhưng có khả năng gây nhầm lẫn. –

Các vấn đề liên quan