با 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 را تماشا کنید.