2010-09-02 12 views

उत्तर

169

आप एक पेंट ऑब्जेक्ट की getTextBounds(String text, int start, int end, Rect bounds) विधि का उपयोग कर सकते हैं। आप या तो TextView द्वारा प्रदान की गई पेंट ऑब्जेक्ट का उपयोग कर सकते हैं या अपनी इच्छित टेक्स्ट उपस्थिति के साथ स्वयं को बना सकते हैं।

एक TextView का उपयोग करके आप कर सकते हैं निम्नलिखित:

Rect bounds = new Rect(); 
Paint textPaint = textView.getPaint(); 
textPaint.getTextBounds(text, 0, text.length(), bounds); 
int height = bounds.height(); 
int width = bounds.width(); 
+2

@ फ्रैंक: क्या होगा यदि स्ट्रिंग एक स्पैन स्ट्रिंग है? – Ashwin

+0

ग्रेट उत्तर। वैसे, अगर टेक्स्ट 'textView.setTextSize() 'कॉल करें तो परिणाम अधिक सटीक होगा। – li2

61

तुम सिर्फ चौड़ाई की जरूरत है आप का उपयोग कर सकते हैं:

float width = paint.measureText(string); 

http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)

+1

इसके अतिरिक्त, यदि आप किसी निश्चित फ़ॉन्ट आकार पर टेक्स्ट को मापना चाहते हैं तो आप 'टेक्स्टपेंट पेंट = नया टेक्स्टपेंट() का उपयोग कर सकते हैं; paint.setTextSize (textSize); '। 'textSize' पिक्सेल में है। –

14

एक के लिए दो अलग-अलग चौड़ाई के उपाय कर रहे हैं पाठ। एक पिक्सल की संख्या है जो चौड़ाई में खींची गई है, दूसरी बात पाठ को चित्रित करने के बाद कर्सर को 'पिक्सेल' की संख्या उन्नत होना चाहिए।

paint.measureText और paint.getTextWidths पिक्सल (नाव में) जो कर्सर दिया स्ट्रिंग ड्राइंग के बाद उन्नत किया जाना चाहिए की संख्या देता है। चित्रित पिक्सल की संख्या के लिए अन्य जवाब में वर्णित पेंट.getTextBounds का उपयोग करें। मेरा मानना ​​है कि इसे फ़ॉन्ट का 'एडवांस' कहा जाता है।

कुछ फोंट इन दो माप अलग (बहुत) के लिए

, उदाहरण के लिए फ़ॉन्ट Black Chancery पत्र जो अतीत अन्य पत्र (ओवरलैपिंग) का विस्तार है - राजधानी 'एल' देखते हैं। पेंट.getTextBounds का उपयोग करें जैसा पिक्सेल पेंट करने के लिए अन्य उत्तरों में उल्लिखित है।

4

मैं इस तरह से चौड़ाई मापा जाता है

String str ="Hiren Patel"; 

Paint paint = new Paint(); 
paint.setTextSize(20); 
Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica.ttf"); 
paint.setTypeface(typeface); 
paint.setColor(Color.BLACK); 
paint.setStyle(Paint.Style.FILL); 
Rect result = new Rect(); 
paint.getTextBounds(str, 0, str.length(), result); 

Log.i("Text dimensions", "Width: "+result.width()); 

यह आपको मदद मिलेगी।

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