ב-Android מגרסה 8.0 (רמת API 26) ואילך, אפשר להורות
TextView כדי לאפשר לגודל הטקסט
להרחיב או להתכווץ באופן אוטומטי כדי למלא את פריסתו בהתאם
המאפיינים והגבולות של TextView. בעזרת ההגדרה הזו קל יותר
לבצע אופטימיזציה של גודל הטקסט במסכים שונים עם תוכן דינמי.
ב-Support Library 26.0 יש תמיכה מלאה בשינוי האוטומטי של גודל TextView
במכשירים עם מערכת ההפעלה Android בגרסה 8.0 (רמת API 26) ומטה.
החבילה android.support.v4.widget מכילה את TextViewCompat
כדי לגשת לתכונות באופן תואם לאחור.
הגדרת גודל אוטומטי של TextView
ניתן להשתמש במסגרת או בספריית התמיכה כדי להגדיר את הגודל האוטומטי של
TextView באופן פרוגרמטי או ב-XML. שפת תרגום
להגדיר את מאפייני ה-XML, אפשר גם להשתמש במאפיינים
החלון ב-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 או אחידה.
הערה: מאפייני ברירת המחדל של מודעה אחידה
ההתאמה לעומס (scaling) היא 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 משתנה באופן אחיד בטווח שבין
במאפיין הגודל המינימלי והמקסימלי. כל הוספה מתבצעת כשלב
הגודל שמוגדר במאפיין רזולוציית הניווט.
- כדי להגדיר טווח של גדלים של טקסט ומאפיין באופן פרוגרמטי, מפעילים
ה
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit). מציינים את הערך המקסימלי, הערך המינימלי ורמת הפירוט וכל ערך שלTypedValueיחידת מידה. - כדי להגדיר טווח של גדלים של טקסט ומאפיין ב-XML, משתמשים בפונקציה
androidמרחב שמות והגדרה את המאפיינים הבאים:- מגדירים את
autoSizeTextTypeכללא או כאחיד. הערך 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" />
הגדרת רמת פירוט באמצעות ספריית התמיכה
- כדי להגדיר טווח של גדלים של טקסט ומאפיין באופן פרוגרמטי באמצעות
ספריית התמיכה, קראו
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit). מספקים את הערך המקסימלי, הערך המינימלי, ערך הפירוט ו וכל יחידת מידהTypedValue. - כדי להגדיר טווח של גודלי טקסט ומאפיין ב-XML באמצעות התמיכה
בספרייה, משתמשים במרחב השמות
appומגדיריםautoSizeText,autoSizeMinTextSizeautoSizeMaxTextSize, וגם מאפייני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כללא או כאחיד. ללא הוא ערך ברירת המחדל, והמאפיין 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" />
הגדרת גדלים מוגדרים מראש באמצעות ספריית התמיכה
- כדי להשתמש בגדלים מוגדרים מראש להגדרת הגודל האוטומטי של
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.