ב-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
,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
כללא או כאחיד. ללא הוא ערך ברירת המחדל, והמאפיין 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.