Android 8.0 (API লেভেল 26) এবং উচ্চতর, আপনি TextView এর বৈশিষ্ট্য এবং সীমানার উপর ভিত্তি করে এর লেআউটটি পূরণ করতে পাঠ্যের আকারকে প্রসারিত করতে বা স্বয়ংক্রিয়ভাবে সংকোচন করার জন্য একটি TextView নির্দেশ দিতে পারেন। এই সেটিংটি গতিশীল সামগ্রী সহ বিভিন্ন স্ক্রিনে পাঠ্যের আকার অপ্টিমাইজ করা সহজ করে তোলে৷
Support Library 26.0 সম্পূর্ণরূপে Android ভার্সন 8.0 (API লেভেল 26) বা তার নিচে চলমান ডিভাইসগুলিতে অটোসাইজিং TextView ফিচার সমর্থন করে। android.support.v4.widget প্যাকেজে একটি পশ্চাদগামী-সামঞ্জস্যপূর্ণ ফ্যাশনে বৈশিষ্ট্যগুলি অ্যাক্সেস করার জন্য TextViewCompat ক্লাস রয়েছে।
টেক্সটভিউ অটোসাইজ সেট আপ করুন
আপনি হয় ফ্রেমওয়ার্ক বা সাপোর্ট লাইব্রেরি ব্যবহার করতে পারেন যাতে TextView প্রোগ্রাম্যাটিকভাবে বা XML-এ অটোসাইজ করা যায়। XML বৈশিষ্ট্যগুলি সেট করতে, আপনি Android স্টুডিওতে বৈশিষ্ট্য উইন্ডোটিও ব্যবহার করতে পারেন।
তিনটি উপায়ে আপনি TextView এর অটোসাইজিং সেট আপ করতে পারেন, যা অনুসরণ করা বিভাগগুলিতে বর্ণিত হয়েছে:
দ্রষ্টব্য : আপনি যদি একটি XML ফাইলে অটোসাইজিং সেট করেন, আমরা একটি TextView এর layout_width বা layout_height বৈশিষ্ট্যের জন্য "wrap_content" মান ব্যবহার করার পরামর্শ দিই না। এটি করার ফলে অপ্রত্যাশিত ফলাফল হতে পারে।
ডিফল্ট
ডিফল্ট সেটিং অনুভূমিক এবং উল্লম্ব অক্ষগুলিতে অভিন্নভাবে TextView স্কেলের অটোসাইজ করতে দেয়।
- ডিফল্ট সেটিং প্রোগ্রামগতভাবে সংজ্ঞায়িত করতে,
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)পদ্ধতিতে কল করুন। অটোসাইজিং বৈশিষ্ট্যটি বন্ধ করতেAUTO_SIZE_TEXT_TYPE_NONEপ্রদান করুন বা অনুভূমিক এবং উল্লম্ব অক্ষগুলিকে সমানভাবে স্কেল করতেAUTO_SIZE_TEXT_TYPE_UNIFORMপ্রদান করুন৷ - XML-এ ডিফল্ট সেটিং সংজ্ঞায়িত করতে,
androidনেমস্পেস ব্যবহার করুন এবংautoSizeTextTypeঅ্যাট্রিবিউটটি none বা ইউনিফর্মে সেট করুন।
দ্রষ্টব্য : ইউনিফর্ম স্কেলিং এর জন্য ডিফল্ট মাত্রা হল minTextSize = 12sp , maxTextSize = 112sp , এবং granularity = 1px.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
সাপোর্ট লাইব্রেরি ব্যবহার করে ডিফল্ট সেটিং নির্ধারণ করুন
- সাপোর্ট লাইব্রেরির মাধ্যমে প্রোগ্রাম্যাটিকভাবে ডিফল্ট সেটিং নির্ধারণ করতে,
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)পদ্ধতিতে কল করুন।TextViewউইজেটের একটি উদাহরণ প্রদান করুন এবং পাঠ্য প্রকারের একটি, যেমনTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONEবাTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM। - সমর্থন লাইব্রেরির মাধ্যমে XML-এ ডিফল্ট সেটিং সংজ্ঞায়িত করতে,
appনামস্থান ব্যবহার করুন এবংautoSizeTextTypeবৈশিষ্ট্যটি none বা ইউনিফর্মে সেট করুন।
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" /> </LinearLayout>
গ্রানুলারিটি
আপনি সর্বনিম্ন এবং সর্বাধিক পাঠ্য আকারের একটি পরিসীমা এবং একটি মাত্রা নির্ধারণ করতে পারেন যা প্রতিটি ধাপের আকার নির্দিষ্ট করে। TextView ন্যূনতম এবং সর্বাধিক আকারের বৈশিষ্ট্যগুলির মধ্যে একটি পরিসরে অভিন্নভাবে স্কেল করে৷ গ্রানুলারিটি অ্যাট্রিবিউটে স্টেপ সাইজ সেট হিসাবে প্রতিটি ইনক্রিমেন্ট ঘটে।
- টেক্সট আকারের একটি পরিসর এবং প্রোগ্রামগতভাবে একটি মাত্রা সংজ্ঞায়িত করতে,
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)পদ্ধতিতে কল করুন। সর্বোচ্চ মান, সর্বনিম্ন মান, গ্রানুলারিটি মান এবং যেকোনTypedValueডাইমেনশন একক প্রদান করুন। - XML-এ পাঠ্য আকারের একটি পরিসীমা এবং একটি মাত্রা নির্ধারণ করতে,
androidনেমস্পেস ব্যবহার করুন এবং নিম্নলিখিত বৈশিষ্ট্যগুলি সেট করুন:-
autoSizeTextTypeবৈশিষ্ট্যটি কোনটি নয় বা ইউনিফর্মে সেট করুন। কোনো মানই ডিফল্ট নয়, এবং ইউনিফর্ম অনুভূমিক এবং উল্লম্ব অক্ষগুলিতেTextViewসমানভাবে স্কেল করতে দেয়। -
TextView-এর অটোসাইজ করার জন্য মাত্রা নির্ধারণ করতেautoSizeMinTextSize,autoSizeMaxTextSizeএবংautoSizeStepGranularityবৈশিষ্ট্যগুলি সেট করুন।
-
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizeMinTextSize="12sp" android:autoSizeMaxTextSize="100sp" android:autoSizeStepGranularity="2sp" />
সমর্থন লাইব্রেরি ব্যবহার করে গ্রানুলারিটি সংজ্ঞায়িত করুন
- সাপোর্ট লাইব্রেরির মাধ্যমে প্রোগ্রাম্যাটিকভাবে পাঠ্য আকারের একটি পরিসীমা এবং একটি মাত্রা নির্ধারণ করতে,
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)পদ্ধতিতে কল করুন। সর্বোচ্চ মান, সর্বনিম্ন মান, গ্রানুলারিটি মান এবং যেকোনTypedValueডাইমেনশন একক প্রদান করুন। - সমর্থন লাইব্রেরির মাধ্যমে XML-এ পাঠ্য আকারের একটি পরিসর এবং একটি মাত্রা নির্ধারণ করতে,
appনামস্থান ব্যবহার করুন এবং লেআউট XML ফাইলেautoSizeText,autoSizeMinTextSize,autoSizeMaxTextSize, এবংautoSizeStepGranularityবৈশিষ্ট্যগুলি সেট করুন৷
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizeMinTextSize="12sp" app:autoSizeMaxTextSize="100sp" app:autoSizeStepGranularity="2sp" /> </LinearLayout>
প্রিসেট মাপ
প্রিসেট আকারগুলি আপনাকে পাঠ্য অটোসাইজ করার সময় TextView বেছে নেওয়া মানগুলি নির্দিষ্ট করতে দেয়।
-
TextViewপ্রোগ্রামেটিকভাবে অটোসাইজিং সেট আপ করতে প্রিসেট মাপ ব্যবহার করতে,setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)পদ্ধতিতে কল করুন। আকারের একটি অ্যারে এবং আকারের জন্য যেকোনTypedValueমাত্রা একক প্রদান করুন। - এক্সএমএলে
TextView-এর অটোসাইজিং সেট আপ করতে প্রিসেট মাপ ব্যবহার করতে,androidনেমস্পেস ব্যবহার করুন এবং নিম্নলিখিত বৈশিষ্ট্যগুলি সেট করুন:-
autoSizeTextTypeবৈশিষ্ট্যটি কোনটি নয় বা ইউনিফর্মে সেট করুন। কোনো মানই ডিফল্ট নয়, এবং ইউনিফর্ম অনুভূমিক এবং উল্লম্ব অক্ষগুলিতেTextViewসমানভাবে স্কেল করতে দেয়। - প্রিসেট মাপের একটি অ্যারেতে
autoSizePresetSizesঅ্যাট্রিবিউট সেট করুন। একটি সম্পদ হিসাবে অ্যারে অ্যাক্সেস করতে,res/values/arrays.xmlফাইলে অ্যারেটি সংজ্ঞায়িত করুন।
-
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizePresetSizes="@array/autosize_text_sizes" />
সমর্থন লাইব্রেরি ব্যবহার করে প্রিসেট মাপ সেট আপ করুন
- সাপোর্ট লাইব্রেরির মাধ্যমে
TextViewপ্রোগ্রামেটিকভাবে অটোসাইজিং সেট আপ করতে প্রিসেট মাপ ব্যবহার করতে,TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)পদ্ধতিতে কল করুন।TextViewক্লাসের একটি উদাহরণ, আকারের একটি অ্যারে এবং আকারের জন্য যেকোনTypedValueমাত্রা ইউনিট প্রদান করুন। - সমর্থন লাইব্রেরির মাধ্যমে XML-এ
TextViewএর অটোসাইজিং সেট আপ করতে প্রিসেট মাপ ব্যবহার করতে,appনামস্থান ব্যবহার করুন এবং লেআউট XML ফাইলেautoSizeTextTypeএবংautoSizePresetSizesবৈশিষ্ট্যগুলি সেট করুন৷
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizePresetSizes="@array/autosize_text_sizes" /> </LinearLayout>
অতিরিক্ত সম্পদ
ডায়নামিক কন্টেন্টের সাথে কাজ করার সময় একটি TextView অটোসাইজ করার বিষয়ে অতিরিক্ত তথ্যের জন্য, Android Jetpack: Autosizing TextView দেখুন।