2009-02-11 16 views
32

मैं एक एडोब फ्लेक्स एप्लिकेशन बना रहा हूं और मेरे पास टेक्स्ट कंट्रोल (एमएक्स: टेक्स्ट) है, जिसका उपयोग तब किया जाता है जब आपको मल्टीलाइन गैर-संपादन योग्य टेक्स्ट की आवश्यकता होती है (जैसा कि लेबल के विपरीत है, जो एकल लाइन noneditable पाठ है)। जब मैं ब्राउज़र विंडो को पाठ से छोटा होने के लिए आकार बदलता हूं (या ब्राउजर विंडो के साथ इसे पहले से लोड करता हूं) तो मेरा टेक्स्ट कंट्रोल लपेटता नहीं है। मैंने पाया कि this doc पर परामर्श करने पर, ऐसा लगता है कि शब्द-रैप कार्यक्षमता केवल तब होती है जब आप पिक्सेल में पूर्ण चौड़ाई निर्दिष्ट करते हैं। यही वही है जो मैं टालने की कोशिश कर रहा हूं। मैं चाहता हूं कि टेक्स्ट मेरी फ्लैश ऑब्जेक्ट को दिए गए आकार के अंदर फिट करने के लिए लपेटें ताकि यह हमेशा दिखाई दे ... क्या इसे पूरा करने का कोई तरीका है, कुछ संपत्ति के माध्यम से मैं लापता हूं या शायद एक अलग नियंत्रण? धन्यवाद।शब्द लपेटने के लिए फ्लेक्स टेक्स्ट कंट्रोल कैसे प्राप्त करें

उत्तर

0

आप Event.RESIZE के लिए पैरेंट नोड में इवेंट हैंडलर जोड़ने का प्रयास कर सकते हैं, और टेक्स्ट ऑब्जेक्ट की validateNow() विधि को कॉल कर सकते हैं। (शायद invalidateSize() कॉल से पहले।) यह स्वचालित रूप से क्यों नहीं होता है मैं नहीं बता सकता।

5

प्रतिशत चौड़ाई और ऊंचाई वास्तव में उनके पिक्सेल समकक्षों को हल करती है, इसलिए उनका उपयोग करके आपको लपेटने और रिश्तेदार आकार को प्राप्त करना चाहिए। उदाहरण के लिए:

<?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> 

है, बशर्ते कि किसी भी तरह की चौड़ाई सेटिंग है, रिश्तेदार आकार (एक स्पष्ट संख्या, जिसे प्रतिशत, एक बाधा आधारित लंगर - जैसे, शीर्ष, सही, नीचे, बाएं - इत्यादि) पाठ को स्वाभाविक रूप से लपेटने का कारण बनना चाहिए। क्या यह दृष्टिकोण आपके द्वारा उपयोग किए जा रहे लेआउट के साथ काम नहीं करता है? कुछ कोड के बिना, यह कहना मुश्किल है, लेकिन आप सही हैं - रैपिंग को कंटेनर पर चौड़ाई से संबंधित संपत्ति सेट करने की आवश्यकता होती है।

आकार बदलना और लपेटना थोड़ा मुश्किल हो सकता है, हालांकि, संदर्भ के आधार पर, यदि आपको लगता है कि यह काम नहीं करता है, तो कुछ कोड पोस्ट करने का प्रयास करें - मुझे यकीन है कि हम में से एक आप को आपकी मदद करने में सक्षम होगा यह बाहर।

25

मुझे यह वही समस्या थी। मेरे मामले में मेरे पास एक एमएक्स था: टेक्स्ट ब्लॉक (जिसे लपेटा जाना चाहिए), और वह एमएक्स: टेक्स्ट ऑब्जेक्ट को दो एमएक्स के भीतर एम्बेडेड किया गया था: वीबीओक्स कंटेनर।

एक ही रास्ता है कि मैं सफलतापूर्वक रैप करने के लिए पाठ मिला निम्न दोनों क्या करना था:

  1. प्रत्येक VBox कंटेनर में 'चौड़ाई = "100%"' संपत्ति डाल (जिसमें mx: पाठ रहता है)।
  2. प्रत्येक MX में 'चौड़ाई = "100%"' संपत्ति डाल: पाठ वस्तु (VBox के इस घोंसले के भीतर रहने वाले)

बहुत गैर सहज ज्ञान युक्त है, लेकिन यह है कि क्या मेरे लिए काम किया है।

मुझे उम्मीद है कि यह आपकी मदद करेगा!

जॉन Kinsting

+1

आह। मुझे बस एक ही समस्या थी, जिसे एक ही चीज़ से हल किया गया था - चौड़ाई को तीन चीजों पर स्पष्ट रूप से सेट करना - बाहरी बॉक्स, आंतरिक बॉक्स और टेक्स्ट ऑब्जेक्ट। – user8032

0

मैं VBox चौड़ाई लागू करने लगता है = "100%" और पाठ चौड़ाई = "100%" सरल उपाय है। नोट: यदि पाठ गतिशील रूप से जेनरेट किया गया है, तो text.percentWidth = 100

0

तो ईसाई का काम केवल पाठ के अंदर एक पाठ तत्व के साथ एक अनुप्रयोग का उदाहरण है, लेकिन लेआउट को पेंच करना बहुत आसान है। बस एक VBox जोड़ने inbetween और रैपिंग काम नहीं करता है:

<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

अजीब .. यदि आप टेक्स्ट से ऊंचाई = "100%" हटाते हैं तो यह काम करता है ... – Tom

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

अपने पाठ घटक में जोड़ना।

4

इस कोशिश आप एक MXML घटक के अंदर काम करने के लिए पाठ रैप प्राप्त करने की कोशिश कर रहे हैं:

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

आप मूल रूप से घटक की चौड़ाई के चौड़ाई स्थापित कर रहे हैं और 100% करने के लिए ऊंचाई की स्थापना जब आप आकार को कम करते हैं तो इसे सही तरीके से लपेटने की अनुमति होगी।

-2

मैं केवल MXML का उपयोग कर इसे कर सकता है। नतीजा काफी बदसूरत है, लेकिन मैं इसे कर सकता था।

<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

अपने पाठ क्षेत्र में स्थापित करने htmlText = "true" का प्रयास करें।

संबंधित मुद्दे