2010-07-15 13 views
107

पर टेक्स्ट चौड़ाई मापने के लिए मापने की विधि है क्या कोई तरीका है जो ड्रॉटेक्स्ट() विधि का उपयोग करके एंड्रॉइड कैनवास पर एक पाठ के चौड़ाई (पिक्सेल में) को खींचने के लिए उपयोग किए गए पेंट के अनुसार होता है ?कैनवास (एंड्रॉइड)

उत्तर

183

क्या आपने android.graphics.Paint.measureText(String txt) पर देखा है?

+18

धन्यवाद यह है! मुझे नहीं पता कि मैंने इसे क्यों छोड़ दिया। उद्देश्य स्क्रीन के केंद्र में बस एक पाठ खींचना था। वैसे भी मुझे एहसास हुआ कि मैं पाठ को आकर्षित करने के लिए उपयोग किए गए पेंट पर सेटटेक्स्ट एलाइन (Align.CENTER) का भी उपयोग कर सकता था, यह निर्दिष्ट उत्पत्ति को खींचे गए पाठ के केंद्र में बदल देता है। धन्यवाद। – NioX5199

+2

ग्रेट, धन्यवाद, पेंट पर संरेखित सेटिंग! किसने सोचा होगा ...? –

+0

या आप पाठ दृश्य की गुरुत्वाकर्षण केंद्र – yeradis

22
Paint paint = new Paint(); 
Rect bounds = new Rect(); 

int text_height = 0; 
int text_width = 0; 

paint.setTypeface(Typeface.DEFAULT);// your preference here 
paint.setTextSize(25);// have this the same as your text size 

String text = "Some random text"; 

paint.getTextBounds(text, 0, text.length(), bounds); 

text_height = bounds.height(); 
text_width = bounds.width(); 
0

मैं तरीकों measureText() और getTextPath() + computeBounds() और सभी पाठ का श्रेय निश्चित आकार फ़ॉन्ट https://github.com/ArminJo/android-blue-display/blob/master/TextWidth.xlsx के नीचे पाया जा सकता है कि के लिए के साथ एक एक्सेल का निर्माण करते थे। वहाँ आप भी सरल फार्मूले के लिए अन्य पाठ Ascend आदि

app के साथ-साथ एक्सेल में प्रयुक्त कच्चे मूल्यों पैदा करने के लिए समारोह drawFontTest() इस रेपो में भी उपलब्ध हैं जैसे गुण मिल जाएगा।

-1

आप उपयोग कर सकते हैं "textPaint.getTextSize()" पाठ चौड़ाई

1

खैर मैं अलग तरह से किया है पाने के लिए:

String finalVal ="Hiren Patel"; 

Paint paint = new Paint(); 
paint.setTextSize(40); 
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(finalVal, 0, finalVal.length(), result); 

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

आशा यह आप में मदद मिलेगी।

4

पूरक जवाब

चौड़ाई Paint.measureText और Paint.getTextBounds द्वारा लौटाए में कुछ अंतर नहीं है। measureText एक चौड़ाई देता है जिसमें स्ट्रिंग की शुरुआत और अंत में ग्लीफ का अग्रिमएक्स मान पैडिंग शामिल होता है। Rect चौड़ाई getTextBounds द्वारा लौटी गई चौड़ाई में यह पैडिंग नहीं है क्योंकि सीमा Rect है जो पाठ को कसकर लपेटती है।

source

+0

पर सेट कर सकते हैं, यह अधिक सटीक है। धन्यवाद। – chksr