في الإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك توجيه
TextView
للسماح بتوسيع حجم النص
أو تقليصه تلقائيًا لملء التنسيق استنادًا إلى
خصائص TextView
وحدوده. يسهّل هذا الإعداد تحسين حجم النص على الشاشات المختلفة باستخدام المحتوى الديناميكي.
يتوافق الإصدار 26.0 من Support Library بشكل كامل مع ميزة "TextView
" لتغيير الحجم التلقائي
على الأجهزة التي تعمل بالإصدار 8.0 من Android (المستوى 26 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم.
تحتوي حزمة android.support.v4.widget
على الفئة TextViewCompat
للوصول إلى الميزات بطريقة متوافقة مع الأنظمة القديمة.
إعداد الحجم التلقائي في TextView
يمكنك استخدام إطار العمل أو "مكتبة الدعم" لإعداد ضبط حجم TextView
تلقائيًا بشكل آلي أو بتنسيق XML. لضبط
سمات XML، يمكنك أيضًا استخدام نافذة الخصائص
في "استوديو Android".
هناك ثلاث طرق يمكنك من خلالها ضبط الحجم التلقائي لـ 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
على بدون أو موحّد.
ملاحظة: الأبعاد التلقائية للتحجيم الموحّد هي 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" />
تحديد الإعداد التلقائي باستخدام Support Library
- لتحديد الإعداد التلقائي آليًا من خلال "مكتبة الدعم"،
اطلب طريقة
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
. قدِّم نسخة من التطبيق المصغَّرTextView
وأحد أنواع النص، مثلTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
أوTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
. - لتحديد الإعداد التلقائي في XML من خلال "مكتبة الدعم"، استخدِم مساحة الاسم
app
واضبط السمةautoSizeTextType
على بدون أو موحّد.
<?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
إما على none أو uniform. تكون القيمة none (بدون) هي القيمة التلقائية، وتتيح القيمة uniform ضبط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" />
تحديد الدقة باستخدام Support Library
- لتحديد نطاق من أحجام النص وسمة معيّنة آليًا من خلال
"مكتبة الدعم"، يمكنك استدعاء طريقة
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 (بدون) هي القيمة التلقائية، وتتيح القيمة uniform ضبط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" />
إعداد الأحجام المُعدَّة مسبقًا باستخدام Support Library
- لاستخدام أحجام معدّة مسبقًا لإعداد تغيير الحجم التلقائي لحجم
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: ضبط حجم النص تلقائيًا.