2009-02-11 35 views
32

Tôi đang tạo ứng dụng Adobe Flex và tôi có một điều khiển Văn bản (mx: Văn bản), được cho là được sử dụng khi bạn cần văn bản không thể chỉnh sửa đa cấp (trái ngược với Nhãn, đó là dòng văn bản không thể chỉnh sửa). Điều khiển văn bản của tôi không bọc khi tôi đổi kích thước cửa sổ trình duyệt nhỏ hơn văn bản (hoặc tải nó bằng cửa sổ trình duyệt đã nhỏ hơn). Khi tư vấn this doc mà tôi đã tìm thấy, có vẻ như chức năng bọc từ chỉ xảy ra nếu bạn chỉ định chiều rộng tuyệt đối bằng pixel. Đó là chính xác những gì tôi đang cố gắng để tránh. Tôi muốn các văn bản để bọc để phù hợp với bên trong kích thước cho đối tượng Flash của tôi để nó luôn luôn có thể nhìn thấy ... là có cách nào để thực hiện điều này, thông qua một số tài sản tôi đang mất tích hoặc có lẽ là một điều khiển khác nhau? Cảm ơn.cách tạo điều khiển văn bản Flex cho từ bọc

Trả lời

0

Bạn có thể thử thêm trình xử lý sự kiện vào nút cha cho Event.RESIZE và gọi phương thức validateNow() của đối tượng Văn bản. (Có lẽ trước bởi một cuộc gọi invalidateSize().) Tại sao điều này không xảy ra tự động tôi không thể nói.

5

Chiều rộng phần trăm và chiều cao thực sự giải quyết tương đương với pixel của chúng, vì vậy việc sử dụng chúng sẽ đạt được kích cỡ gói và kích thước tương đối mà bạn đang tìm kiếm. Ví dụ:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%"> 
    <mx:Text width="100%" height="100%" text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." /> 
</mx:Application> 

Đó là, với điều kiện có một thiết lập chiều rộng của bất cứ loại nào, kích thước tương đối (một số rõ ràng, một phần trăm, một neo chế dựa trên - ví dụ, top, right, dưới, trái - vv) nên làm cho văn bản được quấn tự nhiên. Cách tiếp cận này không hoạt động với bố cục bạn đang sử dụng? Nếu không có một số mã, thật khó để nói, nhưng bạn đang phải - gói yêu cầu thiết lập một tài sản liên quan đến chiều rộng trên container.

Thay đổi kích cỡ và gói có thể hơi phức tạp, tùy thuộc vào ngữ cảnh, vì vậy nếu bạn thấy điều này không hiệu quả, hãy thử đăng một số mã - Tôi chắc chắn một trong số chúng tôi có thể giúp bạn nó ra.

25

Tôi gặp vấn đề tương tự. Trong trường hợp của tôi, tôi đã có một mx: khối văn bản (mà NÊN đã bao bọc), và rằng mx: đối tượng văn bản đã được nhúng trong HAI mx: container VBox.

Cách duy nhất mà tôi nhận được văn bản để quấn thành công là phải làm cả hai điều sau đây:

  1. đặt 'width = '100%'' bất động sản vào MỖI chứa VBox (trong đó mx: văn bản cư trú).
  2. đặt 'width = '100%'' bất động sản vào MỖI mx: đối tượng Text (cư trú trong phạm vi làm tổ này của VBox của)

Rất phi trực quan, nhưng đây là những gì làm việc cho tôi.

Tôi hy vọng điều này sẽ giúp ích cho bạn!

Jon Kinsting

+1

Aha. Tôi chỉ có cùng một vấn đề, đã được giải quyết bởi cùng một thứ - thiết lập chiều rộng một cách rõ ràng trên ba thứ - hộp bên ngoài, hộp bên trong và đối tượng Text. – user8032

0

Tôi nghĩ rằng việc áp dụng rộng VBox = "100%" và văn bản width = "100%" là cách đơn giản nhất. Lưu ý: nếu Văn bản được tạo động, đừng quên thực hiện text.percentWidth = 100

0

Ví dụ của Christian chỉ là một Ứng dụng có phần tử Văn bản bên trong cơ quan, nhưng quá dễ dàng để sắp xếp bố cục. Chỉ cần thêm một VBox Inbetween và gói không không công việc:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%"> 
<mx:VBox width="100%"> 
    <mx:Text width="100%" height="100%" text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />  
</mx:VBox> 
</mx:Application> 
+0

Lạ .. Nếu bạn xóa chiều cao = "100%" khỏi Văn bản hoạt động ... – Tom

-4
render="invalidateSize();validateNow(); 
'component id'.mx_internal::getTextField().wordWrap=true" 

thêm video này vào phần văn bản của bạn.

4

Nếu bạn đang cố gắng để có được bọc văn bản để làm việc bên trong một thành phần MXML thử điều này:

<mx:Text id="testText" 
    width="{ this.width }" 
    height="100%" 
    text="Your text here" /> 

Bạn đang cơ bản thiết lập chiều rộng với chiều rộng của các thành phần và thiết lập chiều cao đến 100% sẽ cho phép nó bọc chính xác khi bạn thu nhỏ kích thước.

-2

Tôi có thể làm điều đó chỉ bằng mxml. Kết quả là khá xấu, nhưng tôi có thể làm được.

<s:Group id="propDisplay" width="100%"> 
    <mx:Text id="key" left="0" text="{data.key}:"/> 
    <mx:Text left="{key.width}" maxWidth="{propDisplay.width - key.width}" 
          text="{data.value}" /> 
</s:Group> 
-1

Thử đặt htmlText = "true" trong trường văn bản của bạn.

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