আমি সম্ভব হলে উচ্চতাও পেতে চাই।
আমি সম্ভব হলে উচ্চতাও পেতে চাই।
উত্তর:
আপনি 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();
textView.setTextSize()
।
আপনার যদি প্রস্থের প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন:
float width = paint.measureText(string);
http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)
TextPaint paint = new TextPaint(); paint.setTextSize(textSize);
। textSize
পিক্সেল হয়।
একটি পাঠ্যের জন্য দুটি পৃথক প্রস্থের ব্যবস্থা রয়েছে। একটি হ'ল পিক্সেলের সংখ্যা যা প্রস্থে অঙ্কিত হয়েছে, অন্যটি 'পিক্সেল' সংখ্যাটি পাঠানোর পরে কার্সারটি উন্নত করা উচিত।
color.measureText এবং color.getTextWidths পিক্সেলের সংখ্যা (ফ্লোটে) প্রদান করে যা প্রদত্ত স্ট্রিং আঁকার পরে কার্সারটি অগ্রসর হওয়া উচিত। পেইন্টেড পিক্সেলের সংখ্যার জন্য পেইন্ট ব্যবহার করুন। আমি বিশ্বাস করি এটিকে ফন্টের 'অগ্রিম' বলা হয়।
কিছু ফন্টের জন্য এই দুটি পরিমাপ আলাদা হয় (অনেকগুলি) উদাহরণস্বরূপ, ব্ল্যাক চ্যানসারি হরফ হরফগুলিতে অন্যান্য অক্ষর (ওভারল্যাপিং) প্রসারিত অক্ষর রয়েছে - রাজধানী 'এল' দেখুন। পিক্সেল আঁকা পেতে অন্যান্য উত্তরে উল্লিখিত হিসাবে পেইন্ট.জেটেক্সটবাউন্ডগুলি ব্যবহার করুন ।
আমি এইভাবে প্রস্থ পরিমাপ করেছি:
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());
এটি আপনাকে সাহায্য করবে।
সম্ভবত আপনি প্রদত্ত ফন্টের (যেমন একটি Typeface
"সানড-সেরিফ" ফন্ট পরিবার হিসাবে একটি BOLD_ITALIC শৈলীর একটি নির্দিষ্ট আকার এবং এসপি বা পিক্সে নির্দিষ্ট আকার) দিয়ে রঙের নির্দিষ্ট স্ট্রিংয়ের জন্য আঁকা মাত্রাগুলি জানতে চান likely
পুরো-ফুলে ফুলে উঠার পরিবর্তে TextView
আপনি নিম্ন স্তরে যেতে পারেন এবং একক-লাইন পাঠ্যের Paint
জন্য সরাসরি কোনও অবজেক্টের সাথে কাজ করতে পারেন , উদাহরণস্বরূপ:
// Maybe you want to construct a (possibly static) member for repeated computations
Paint paint = new Paint();
// You can load a font family from an asset, and then pick a specific style:
//Typeface plain = Typeface.createFromAsset(assetManager, pathToFont);
//Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD);
// Or just reference a system font:
paint.setTypeface(Typeface.create("sans-serif",Typeface.BOLD));
// Don't forget to specify your target font size. You can load from a resource:
//float scaledSizeInPixels = context.getResources().getDimensionPixelSize(R.dimen.mediumFontSize);
// Or just compute it fully in code:
int spSize = 18;
float scaledSizeInPixels = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP,
spSize,
context.getResources().getDisplayMetrics());
paint.setTextSize(scaledSizeInPixels);
// Now compute!
Rect bounds = new Rect();
String myString = "Some string to measure";
paint.getTextBounds(myString, 0, myString.length(), bounds);
Log.d(TAG, "width: " + bounds.width() + " height: " + bounds.height());
জন্য বহু-লাইন বা দৃশ্যও টেক্সট ( SpannedString
), একটি ব্যবহারের বিষয়ে বিবেচনা StaticLayout
যার মাধ্যমে আপনি প্রস্থ এবং উচ্চতা আহরণ। এটি করতে একটি কাস্টম ভিউতে ক্যানভাসে পাঠ্য মাপতে এবং আঁকার বিষয়ে খুব বিস্তৃত উত্তরের জন্য দেখুন: https://stackoverflow.com/a/41779935/954643
অগ্রিম প্রস্থের তুলনায় আঁকা পিক্সেল সম্পর্কে @ আরবার্গের জবাবটিও লক্ষণীয় ("পিক্সেলের সংখ্যা (ফ্লোটে) যা কার্সারকে প্রদত্ত স্ট্রিং আঁকার পরে উন্নত করা উচিত"), যদি আপনার এটির সাথে ডিল করতে হয় তবে।
আমি স্থির শ্রেণীর ব্যবহারের সাথে টানা টেক্সটের সঠিক প্রস্থ ( ) এর আরও ভাল উপায় (আরও বহুমুখী তারপরে বর্তমান স্বীকৃত উত্তর) ভাগ করতে চাই :String
StaticLayout
StaticLayout.getDesiredWidth(text, textPaint))
এই পদ্ধতিটি আরও সঠিক textView.getTextBounds()
, যেহেতু আপনি একটি একক লাইনের প্রস্থ একাধিক লাইনে গণনা করতে পারেন TextView
বা আপনি এটি ব্যবহার TextView
করতে নাও ব্যবহার করতে পারেন (উদাহরণস্বরূপ কাস্টম View
বাস্তবায়নে)।
এই উপায়ে অনুরূপ textPaint.measureText(text)
, তবে এটি বিরল ক্ষেত্রে আরও সঠিক বলে মনে হয়।