जवाबों:
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();
पूरक उत्तर
वहाँ चौड़ाई द्वारा लौटाए में कुछ अंतर है Paint.measureText
और Paint.getTextBounds
। measureText
एक ऐसी चौड़ाई देता है जिसमें स्ट्रिंग के आरंभ और अंत में ग्लाइफ की एडवांसएक्स वैल्यू शामिल होती है। Rect
चौड़ाई द्वारा दिया getTextBounds
क्योंकि सीमा है इस गद्दी नहीं है Rect
कि कसकर पाठ गिर्द घूमती है।
पाठ को मापने के वास्तव में तीन अलग-अलग तरीके हैं।
GetTextBounds:
val paint = Paint()
paint.typeface = ResourcesCompat.getFont(context, R.font.kaushanscript)
paint.textSize = 500f
paint.color = Color.argb(255, 3, 221, 252)
val contents = "g"
val rect = Rect()
paint.getTextBounds(contents, 0, 1, rect)
val width = rect.width()
MeasureTextWidth:
val paint = Paint()
paint.typeface = ResourcesCompat.getFont(context, R.font.kaushanscript)
paint.textSize = 500f
paint.color = Color.argb(255, 3, 221, 252)
val contents = "g"
val width = paint.measureText(contents, 0, 1)
और getTextWidths:
val paint = Paint()
paint.typeface = ResourcesCompat.getFont(context, R.font.kaushanscript)
paint.textSize = 500f
paint.color = Color.argb(255, 3, 221, 252)
val contents = "g"
val rect = Rect()
val arry = FloatArray(contents.length)
paint.getTextBounds(contents, 0, contents.length, rect)
paint.getTextWidths(contents, 0, contents.length, arry)
val width = ary.sum()
ध्यान दें कि getTextWidths उपयोगी हो सकता है यदि आप यह निर्धारित करने की कोशिश कर रहे हैं कि अगली पंक्ति में पाठ को कब लपेटना है।
मापक टेक्स्टविद और गेटटीडविथ बराबर हैं और उन्नत चौड़ाई है जो मापते हैं कि दूसरों ने इसके बारे में पोस्ट किया है। कुछ इस स्थान को अत्यधिक मानते हैं। हालांकि, यह बहुत व्यक्तिपरक है और फ़ॉन्ट पर निर्भर है।
उदाहरण के लिए माप की सीमा से चौड़ाई वास्तव में बहुत छोटी लग सकती है:
हालाँकि एक अतिरिक्त पाठ जोड़ने पर एक अक्षर के लिए सीमा सामान्य लगती है:
कस्टम डेवलपर्स कैनवस ड्रॉइंग के लिए एंड्रॉइड डेवलपर्स गाइड से ली गई छवियां
वैसे मैंने अलग तरीके से किया है:
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());
आशा है कि यह आपकी मदद करेगा।
मैं तरीकों measureText () और getTextPath () + computeBounds () का इस्तेमाल किया और सभी पाठ विशेषताओं तय आकार फ़ॉन्ट के नीचे पाया जा सकता है कि के लिए के साथ एक एक्सेल का निर्माण https://github.com/ArminJo/android-blue-display/blob /master/TextWidth.xlsx । वहां आपको अन्य पाठ विशेषताओं जैसे आरोही आदि के लिए सरल सूत्र भी मिलेंगे।
एप्लिकेशन के साथ ही समारोह drawFontTest () एक्सेल में प्रयुक्त कच्चे मूल्यों पैदा करने के लिए इस रेपो में भी उपलब्ध हैं।