উত্তর:
আপনি কি অ্যান্ড্রয়েড.গ্রাফিক্স.পেনট.মেজারটেক্সট (স্ট্রিং টেক্সট) দেখেছেন ?
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());
আশা করি এটা তোমাকে সাহায্য করবে।
আমি টেক্সট () এবং getTextPath () + কম্পিউটবাউন্ডস () পদ্ধতিগুলি ব্যবহার করেছি এবং https://github.com/ArminJo/android-blue-display/blob এর অধীনে পাওয়া যায় এমন স্থির আকারের ফন্টের জন্য সমস্ত পাঠ্য বৈশিষ্ট্য সহ একটি এক্সেল তৈরি করেছি and /master/TextWidth.xlsx । সেখানে আপনি আরোহণের মতো অন্যান্য পাঠ্য বৈশিষ্ট্যের জন্য সাধারণ সূত্রগুলিও পাবেন will
অ্যাপ্লিকেশন সেইসাথে ফাংশন drawFontTest () সীমা অতিক্রম করা ব্যবহৃত কাঁচা মান জেনারেট করার জন্য এই রেপো তে পাওয়া যায়।