android - एंड्रॉइड पर स्ट्रिंग चौड़ाई कैसे प्राप्त करें?




string bounding-box (3)

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

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

कुछ फ़ॉन्ट्स के लिए इन दो मापों में भिन्नता है (उदाहरण के लिए), उदाहरण के लिए फ़ॉन्ट ब्लैक चांसरी में ऐसे अक्षर होते हैं जो अन्य अक्षरों (ओवरलैपिंग) से आगे बढ़ते हैं - पूंजी 'एल' देखें। चित्रों को चित्रित करने के लिए अन्य उत्तरों में वर्णित paint.getTextBounds का उपयोग करें।

यदि संभव हो तो मैं ऊंचाई भी प्राप्त करना चाहता हूं।


मैंने इस तरह चौड़ाई माप दी है:

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());

यह आपकी मदद करेगा।


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

टेक्स्टव्यू का उपयोग करके आप निम्न कार्य कर सकते हैं:

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





bounding-box