משתמשים של שירותי נגישות, כמו קוראי מסך, מסתמכים על תוויות לתיאור התוכן כדי להבין את המשמעות של אלמנטים בממשק.
במקרים מסוימים, למשל כשהמידע מועבר בצורה גרפית בתוך אלמנט, התוויות לתיאור התוכן יכולות לספק תיאור טקסטואלי של המשמעות או הפעולה שמשויכות לאלמנט.
אם לא מספקים תוויות לתיאור התוכן באלמנטים בממשק המשתמש, למשתמשים מסוימים יהיה קשה להבין את המידע שמוצג להם או לבצע פעולות בממשק.
הטמעה
Viewכשנעשה שימוש בסוגים מסוימים של Views
בממשק, צריך לספק תוויות לתיאור המטרה או הפעולה שמשויכות לאותה View
.
איך מספקים תוויות לתיאור התוכן
android:contentDescription
כשמשתמשים ב-ImageView
, ImageButton
, CheckBox
או בסוג אחר של View
שמציג מידע באופן גרפי, צריך להשתמש במאפיין android:contentDescription
כדי לספק תווית לתיאור התוכן לאותה View
.
לפעמים התווית לתיאור התוכן תלויה במידע שזמין רק בזמן ריצה, או שמשמעות ה-View
עשויה להשתנות לאורך הזמן. לדוגמה, כשמפעילים מוזיקה, יכול להיות שלחצן ההפעלה ישתנה ללחצן ההשהיה. במקרים כאלה צריך להשתמש ב-View#setContentDescription(CharSequence contentDescription)
כדי לעדכן את התווית לתיאור התוכן בזמן המתאים.
בדרך כלל, כששירות נגישות מתאר ViewGroup
, הוא משלב תוויות לתיאור התוכן מהצאצאים של ה-View
שלו. כדי לשנות את ההתנהגות הזו ולציין שאתם רוצים לספק תיאור משלכם לאותו פריט ולצאצאים שלו מסוג View
שלא ניתנים למיקוד, צריך להגדיר contentDescription
ל-ViewGroup
. יכול להיות שתצטרכו לכלול תוויות לתיאור התוכן מצאצאים של Views
בתוך contentDescription
שמוגדר ב-ViewGroup
.
android:hint
ל-EditTexts
או TextViews
, שניתנים לעריכה, צריך להשתמש במאפיין android:hint
כדי לציין את מטרת שדה הטקסט. אסור להשתמש ב-android:contentDescription
כתוויות לתיאור התוכן עבור Views
שניתנות לעריכה.
android:labelFor
צריך להשתמש במאפיין android:labelFor
כדי לציין ש-View
צריכה לשמש כתווית לתיאור התוכן עבור View
אחרת.
מקרים שלא צריך בהם תוויות לתיאור התוכן
במקרים מסוימים, לא צריך לספק תוויות לתיאור התוכן:
- טקסט שמעובד ב-
TextView
(או במחלקות המשנה שלו) מסופק אוטומטית לשירותי נגישות. בדרך כלל לא צריך תוויות נוספות לתיאור התוכן. - לא צריך תוויות לתיאור התוכן בתמונות דקורטיביות או בתמונות שלא מציגות מידע משמעותי מבחינה גרפית. במקרים כאלה, צריך להגדיר מאפיין
android:contentDescription
כ-"@null"
או מאפייןandroid:importantForAccessibility
כ-"no"
.
למידע נוסף, אפשר לקרוא על יישום תוויות לתיאור תוכן בהדרכות למפתחי Android ובמדריכי API.
כשמשתמשים בסוגים מסוימים של תכנים קומפוזביליים בממשק, צריך לספק תוויות לתיאור המטרה או הפעולה שמשויכת לאותו תוכן קומפוזבילי.
איך מספקים תוויות לתיאור התוכן
תיאורי תוכן
כדי לספק תווית לתיאור התוכן ל-Image
, Icon
או תוכן קומפוזבילי אחר ברמה נמוכה שמעביר מידע גרפי, צריך להגדיר את תיאור התוכן.
- התווית לתיאור התוכן עשויה להיות תלויה במידע על זמן ההפעלה, לכן המשמעות של התוכן הקומפוזבילי עשויה להשתנות. לדוגמה, כשמשמיעים מוזיקה, לחצן ההפעלה עשוי להשתנות ללחצן השהיה.
- במקרים כאלה, צריך להשתמש ב-State כדי של'פיתוח נייטיב' תהיה אפשרות להבחין בשינויים בתיאור התוכן ולפתח אותו שוב עם הערך החדש. מידע נוסף על שימוש ב-State וב-'Jetpack פיתוח נייטיב'
- במקרים מסוימים, יכול להיות שתרצו למזג אלמנטים לאלמנט אחד שניתן למיקוד ושמשלב את התוויות לתיאור התוכן מהאלמנטים הצאצאים שלו. איך ממזגים אלמנטים
פרמטר של תווית
חלק מהתכנים הקומפוזביליים, כמו TextField
, תומכים בפרמטר אופציונלי של label
. כשהתווית מוגדרת, האלמנט מציג את התוכן הקומפוזבילי שהועבר ל-label
. אפשר להשתמש בשירותי נגישות כדי לתאר את התוכן הקומפוזבילי.
מקרים שלא צריך בהם תוויות לתיאור התוכן
במקרים מסוימים, לא צריך להוסיף תוויות לתיאור התוכן:
- טקסט שמעובד ב-
Text
, או תכנים קומפוזביליים אחרים שמכיליםText
, מסופקים ישירות לשירותי נגישות. - תמונות דקורטיביות או תמונות שלא מציגות מידע משמעותי מבחינה גרפית.
- במקרים כאלה, צריך להגדיר את הפרמטר
contentDescription
או את המאפייןModifier.semantics#contentDescription
כ-null
או לבצע קריאה ל-Modifier#clearAndSetSemantics
.
- במקרים כאלה, צריך להגדיר את הפרמטר
עיצוב
כשמעצבים ממשק משתמש, חשוב לשקול איך ליצור תוויות לתיאור תוכן שמיוצג באופן גרפי, עבור המשתמשים של שירותי הנגישות. את התוויות לתיאור התוכן צריך ליצור בהתאם לעקרונות האלה:
- לכלול תיאור תמציתי וברור של המשמעות או הפעולה שמשויכות לאלמנט.
- לא לכלול את הסוג או המצב של האלמנט בתווית לתיאור התוכן שלו.
- אם האלמנט משויך לפעולה, צריך לתאר את הפעולה, לא את הייצוג הגרפי שלה.
- לא להנחות את המשתמשים איך לבצע אינטראקציה ספציפית עם האלמנט.
למידע נוסף, אפשר לעיין בהנחיות כתיבה לנגישות ב-Material Design.
בדיקה
כדי לאמת באופן ידני שבממשק המשתמש של אפליקציה לא חסרות תוויות לתיאור התוכן:
- מפעילים את TalkBack.
- נכנסים לאפליקציה.
- משתמשים בתנועות ניווט לינאריות כדי להעביר את המיקוד של שירות הנגישות לכל אחד מהאלמנטים במסך.
- אם TalkBack מתמקד באלמנט מסוים אבל לא מבטא בקול ייצוג משמעותי של האלמנט הזה, או מבטא הודעה שלא כתובה בתווית, יכול להיות שחסרה לאלמנט תווית לתיאור התוכן.
כלי הבדיקה האוטומטיים של Android יכולים לזהות מקרים שבהם חסרות תוויות לתיאור התוכן. כדי לבדוק את האפליקציה במכשיר באופן ידני, כדאי להשתמש ב-Accessibility Scanner ל-Android. כדי להשתמש בבדיקות אוטומטיות, יש להפעיל את בדיקות הנגישות ב-Espresso וב-Robolectric.