অটোসাইজ টেক্সটভিউ

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 প্রদান করুন৷
  • দ্রষ্টব্য : ইউনিফর্ম স্কেলিং এর জন্য ডিফল্ট মাত্রা হল minTextSize = 12sp , maxTextSize = 112sp , এবং granularity = 1px.

  • XML-এ ডিফল্ট সেটিং সংজ্ঞায়িত করতে, android নেমস্পেস ব্যবহার করুন এবং autoSizeTextType অ্যাট্রিবিউটটি none বা ইউনিফর্মে সেট করুন।
  • <?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 দেখুন।