पर टेक्स्ट चौड़ाई मापने के लिए मापने की विधि है क्या कोई तरीका है जो ड्रॉटेक्स्ट() विधि का उपयोग करके एंड्रॉइड कैनवास पर एक पाठ के चौड़ाई (पिक्सेल में) को खींचने के लिए उपयोग किए गए पेंट के अनुसार होता है ?कैनवास (एंड्रॉइड)
उत्तर
क्या आपने android.graphics.Paint.measureText(String txt) पर देखा है?
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();
मैं तरीकों measureText() और getTextPath() + computeBounds() और सभी पाठ का श्रेय निश्चित आकार फ़ॉन्ट https://github.com/ArminJo/android-blue-display/blob/master/TextWidth.xlsx के नीचे पाया जा सकता है कि के लिए के साथ एक एक्सेल का निर्माण करते थे। वहाँ आप भी सरल फार्मूले के लिए अन्य पाठ Ascend आदि
app के साथ-साथ एक्सेल में प्रयुक्त कच्चे मूल्यों पैदा करने के लिए समारोह drawFontTest() इस रेपो में भी उपलब्ध हैं जैसे गुण मिल जाएगा।
आप उपयोग कर सकते हैं "textPaint.getTextSize()" पाठ चौड़ाई
खैर मैं अलग तरह से किया है पाने के लिए:
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());
आशा यह आप में मदद मिलेगी।
पूरक जवाब
चौड़ाई Paint.measureText
और Paint.getTextBounds
द्वारा लौटाए में कुछ अंतर नहीं है। measureText
एक चौड़ाई देता है जिसमें स्ट्रिंग की शुरुआत और अंत में ग्लीफ का अग्रिमएक्स मान पैडिंग शामिल होता है। Rect
चौड़ाई getTextBounds
द्वारा लौटी गई चौड़ाई में यह पैडिंग नहीं है क्योंकि सीमा Rect
है जो पाठ को कसकर लपेटती है।
पर सेट कर सकते हैं, यह अधिक सटीक है। धन्यवाद। – chksr
धन्यवाद यह है! मुझे नहीं पता कि मैंने इसे क्यों छोड़ दिया। उद्देश्य स्क्रीन के केंद्र में बस एक पाठ खींचना था। वैसे भी मुझे एहसास हुआ कि मैं पाठ को आकर्षित करने के लिए उपयोग किए गए पेंट पर सेटटेक्स्ट एलाइन (Align.CENTER) का भी उपयोग कर सकता था, यह निर्दिष्ट उत्पत्ति को खींचे गए पाठ के केंद्र में बदल देता है। धन्यवाद। – NioX5199
ग्रेट, धन्यवाद, पेंट पर संरेखित सेटिंग! किसने सोचा होगा ...? –
या आप पाठ दृश्य की गुरुत्वाकर्षण केंद्र – yeradis