2010-12-01 4 views
6

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

हो सकता है कि किसी को StaticLayout का एक उदाहरण है या यह उपवर्ग उपयोग है?

सबकुछ "कागज पर" इतना आसान दिखता है: "फ्रेम" बनाएं, जांचें कि इसमें कितने अक्षर फिट बैठते हैं, फ्रेम भरें और स्थिति रखें, पाठ के अंत तक दोहराएं और फिर भी मुझे यह कैसे करना है इस पर कुछ भी नहीं मिला :)

+0

यू कोड का परीक्षण किया था? –

उत्तर

6

मैं अपने प्रश्न का सटीक उत्तर नहीं पता है, लेकिन आम तौर पर आप चौड़ाई और एक पाठ फ़ॉन्ट प्रकार और आकार चित्रमय पुस्तकालय में उपलब्ध तरीकों का उपयोग कर के आधार पर की ऊंचाई की गणना कर सकते हैं।

मैं सी # और जावा में यह किया है। सी # में यह "MeasureString" कहा जाता है, और जावा में, "FontMetrics"।

संपादित करें:

देखें अगर यह कोड उपयोगी है (मैं इसे संकलित नहीं किया है क्योंकि मैं यहाँ एंड्रॉयड एसडीके की जरूरत नहीं है):

String myText="";  
    String tempStr=""; 

    int startIndex=0; 
    int endIndex=0; 

    //calculate end index that fits 
    endIndex=myPaint.breakText(myTest, true, frameWidth, null)-1; 

    //substring that fits into the frame 
    tempStr=myText.substring(startIndex,endIndex); 

    while(endIndex < myText.length()-1) 
    {   

     //draw or add tempStr to the Frame 
     //at this point 

     //set new start index 
     startIndex=endIndex+1; 

     //substring the remaining of text 
     tempStr=myText.substring(startIndex,myText.length()-1); 

     //calculate end of index that fits 
     endIndex=myPaint.breakText(tempStr, true, frameWidth, null)-1; 

     //substring that fits into the frame 
     tempStr=myText.substring(startIndex,endIndex); 
    } 

इसी प्रकार के तरीकों Android के लिए उपलब्ध हैं:

breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth) 

पाठ को मापें, मापने की चौड़ाई अधिकतम चौड़ाई से अधिक हो जाती है, तो जल्दी से रोकें।

measureText(String text) 

वापसी पाठ की चौड़ाई।

http://developer.android.com/reference/android/graphics/Paint.html

+0

एंड्रॉयड, @sniurkst में काम नहीं किया है, तो आप सही जवाब तो यह पोस्ट अपना लिया है तो। – Jayesh

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