با Android 8.0 (سطح API 26) و بالاتر، میتوانید به TextView دستور دهید تا اندازه متن را به طور خودکار بزرگ یا منقبض کند تا طرحبندی آن بر اساس ویژگیها و مرزهای TextView پر شود. این تنظیم بهینه سازی اندازه متن را در صفحات مختلف با محتوای پویا آسان تر می کند.
کتابخانه پشتیبانی 26.0 به طور کامل از ویژگی اندازهگیری خودکار TextView در دستگاههای دارای نسخه اندروید 8.0 (سطح API 26) یا پایینتر پشتیبانی میکند. بسته android.support.v4.widget شامل کلاس TextViewCompat برای دسترسی به ویژگیها به روشی سازگار با عقب است.
اندازه خودکار TextView را تنظیم کنید
میتوانید از چارچوب یا کتابخانه پشتیبانی برای تنظیم اندازه خودکار TextView به صورت برنامهنویسی یا XML استفاده کنید. برای تنظیم ویژگی های XML، می توانید از پنجره Properties در Android Studio نیز استفاده کنید.
سه راه برای تنظیم اندازه خودکار TextView وجود دارد که در بخش های زیر توضیح داده شده است:
توجه : اگر اندازه خودکار را در یک فایل XML تنظیم کرده اید، استفاده از مقدار "wrap_content" را برای ویژگی های layout_width یا layout_height یک TextView توصیه نمی کنیم. انجام این کار ممکن است نتایج غیرمنتظره ای به همراه داشته باشد.
پیش فرض
تنظیم پیش فرض به اندازه خودکار مقیاس TextView به طور یکنواخت در محورهای افقی و عمودی اجازه می دهد.
- برای تعریف تنظیمات پیش فرض به صورت برنامه ای، متد
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)را فراخوانی کنید.AUTO_SIZE_TEXT_TYPE_NONEرا برای خاموش کردن ویژگی اندازهگیری خودکار یاAUTO_SIZE_TEXT_TYPE_UNIFORMرا برای مقیاسبندی محورهای افقی و عمودی به طور یکنواخت ارائه دهید. - برای تعریف تنظیمات پیشفرض در XML، از فضای نام
androidاستفاده کنید و ویژگیautoSizeTextTypeرا روی none یا uniform قرار دهید.
توجه : ابعاد پیشفرض برای مقیاسبندی یکنواخت 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 یا uniform قرار دهید.
<?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 به طور یکنواخت در محدوده ای بین ویژگی های حداقل و حداکثر اندازه مقیاس می شود. هر افزایش به عنوان اندازه مرحله تنظیم شده در ویژگی granularity رخ می دهد.
- برای تعریف طیفی از اندازه های متن و ابعاد به صورت برنامه نویسی، روش
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)را فراخوانی کنید. حداکثر مقدار، حداقل مقدار، مقدار دانه بندی و هر واحد بعدیTypedValueرا ارائه دهید. - برای تعریف محدوده ای از اندازه متن و ابعاد در XML، از فضای نام
androidاستفاده کنید و ویژگی های زیر را تنظیم کنید:- ویژگی
autoSizeTextTypeرا روی none یا uniform قرار دهید. مقدار none پیشفرض است و یکنواخت بهTextViewامکان مقیاس یکنواخت در محورهای افقی و عمودی را میدهد. - ویژگی های
autoSizeMinTextSize،autoSizeMaxTextSizeوautoSizeStepGranularityرا برای تعیین ابعاد برای اندازه گیری خودکارTextViewتنظیم کنید.
- ویژگی
<?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استفاده کنید و ویژگیهایautoSizeText،autoSizeMinTextSize،autoSizeMaxTextSizeوautoSizeStepGranularityرا در فایل XML طرحبندی تنظیم کنید.
<?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در XML، از فضای نامandroidاستفاده کنید و ویژگی های زیر را تنظیم کنید:- ویژگی
autoSizeTextTypeرا روی none یا uniform قرار دهید. مقدار none پیشفرض است و یکنواخت به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را برای اندازه ارائه دهید. - برای استفاده از اندازه های از پیش تعیین شده برای تنظیم اندازه خودکار
TextViewدر XML از طریق کتابخانه پشتیبانی، از فضای نامappاستفاده کنید و ویژگی هایautoSizeTextTypeوautoSizePresetSizesرا در فایل 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"?> <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 را تماشا کنید.