في إصدار Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك توجيه
TextView
لإتاحة حجم النص
أو التعاقد تلقائيًا لملء تخطيطه بناءً على
سمات TextView
وحدودها يسهل هذا الإعداد
في تحسين حجم النص على الشاشات المختلفة باستخدام المحتوى الديناميكي.
دعم Library Library 26.0 يتيح بشكل كامل ضبط الحجم التلقائي لـ 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
إلى 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" />
تحديد الإعداد التلقائي باستخدام Support Library (مكتبة الدعم)
- لتحديد الإعداد الافتراضي آليًا من خلال مكتبة الدعم،
طلب
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
بشكل منتظم في نطاق بين
سمات الحد الأدنى والحد الأقصى للحجم. تحدث كل زيادة كخطوة
الحجم المحدد في تصنيف الدقة.
- لتحديد نطاق من أحجام النص وسمة آليًا، يمكنك طلب
الـ
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: ضبط حجم TextView تلقائيًا