في إصدار 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وتعيينautoSizeTextTypeautoSizePresetSizesفي ملف تنسيق 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 تلقائيًا