המשתמשים יכולים להעביר את מיקוד המקלדת בין רכיבים בממשק המשתמש באמצעות מקש Tab או מקשי החיצים (D-pad):
- Tab / Shift+Tab: העברת המיקוד קדימה או אחורה בסדר הופעה חד-ממדי.
- מקשי החיצים: מעבירים את המיקוד בשני ממדים (למעלה, למטה, שמאלה וימינה).
מעבר חד-ממדי בין רכיבים
במעבר מיקוד חד-ממדי, מקש Tab מעביר את המיקוד בממשק המשתמש לפי סדר ההופעה החזותי במסך.
לדוגמה, כשארבעה כפתורים מסודרים בשורות:
Column { Row { Button(onClick = { /* ... */ }) { Text("1st") } Button(onClick = { /* ... */ }) { Text("2nd") } } Row { Button(onClick = { /* ... */ }) { Text("3rd") } Button(onClick = { /* ... */ }) { Text("4th") } } }
לחיצה על המקש Tab מעבירה את המיקוד בין הכפתורים בסדר הבא:
- הכפתור הראשון (למעלה מימין)
- הכפתור השני (בקצה העליון)
- הכפתור השלישי (בפינה הימנית התחתונה)
- הכפתור הרביעי (בקצה התחתון)
אם לוחצים על Tab ברכיב האחרון, המיקוד חוזר לרכיב הראשון. הקשה על Shift+Tab מעבירה את המיקוד בסדר הפוך.
מעבר דו-ממדי בין פריטים בפוקוס
לחיצה על מקשי החיצים במקלדת או שימוש בכפתורי החיצים (D-pad) מפעילים מעבר דו-ממדי בין מוקדי המיקוד.
במעבר דו-ממדי, המערכת בודקת את הקואורדינטות הגיאומטריות ואת הגבולות המרחביים של רכיבים בממשק המשתמש כדי לקבוע מהו היעד הקרוב ביותר בכיוון המבוקש.
מעבר דו-ממדי בין רכיבים לא חוזר על עצמו. אם המשתמש לוחץ על המקש למטה כשהמיקוד נמצא ברכיב התחתון ביותר, המיקוד נשאר ברכיב הזה ולא קופץ לחלק העליון של המסך.
איפוס המעבר בין פריטים באמצעות קליקים על הסמן
כשעוברים בין מקלדת פיזית לבין עכבר או לוח מגע במחשב או במכשירים עם מסך גדול:
- ביטול המיקוד בלחיצה או בנגיעה: לחיצה או נגיעה במרחב לא אינטראקטיבי באמצעות עכבר או לוח מגע מבטלת את המיקוד ברכיב הפעיל.
- התחלה מחדש של המעבר: אחרי שהמיקוד מתבטל, הלחיצה הבאה על מקש Tab מתחילה מחדש את המעבר החד-ממדי ביעד המיקוד הראשון לפי סדר ההופעה החזותית, במקום להמשיך מהרכיב שהיה פעיל קודם. הוא זהה למעבר בין פריטים דו-ממדיים. מקשי החיצים מעבירים את מיקוד המקלדת ליעד המיקוד הקרוב ביותר בכיוון המבוקש.
לפרטים על הסרת המיקוד באופן פרוגרמטי, ראו העברה והסרה של המיקוד.
התאמה אישית של סדר המעבר בין פריטים בפוקוס
אפשר להתאים אישית את אופן המעבר באמצעות מקש הצירוף focusProperties.
התאמה אישית של סדר המעבר החד-ממדי
כדי לשנות את המעבר החד-ממדי, מציינים את המאפיין next או previous עם FocusRequester:
- יוצרים אובייקט
FocusRequesterבאמצעותremember { FocusRequester() }. - מצרפים את
FocusRequesterלרכיב הקומפוזבילי של היעד באמצעות המשתנהfocusRequester. - מחילים את המשתנה
focusPropertiesעל ה-composable של המקור ומקצים אתFocusRequesterל-next(בשביל Tab) או ל-previous(בשביל Shift+Tab).
val (first, second, third) = remember { FocusRequester.createRefs() } Column { Button( onClick = { /* ... */ }, modifier = Modifier .focusRequester(first) .focusProperties { next = third } ) { Text("First (Tab jumps to Third)") } Button( onClick = { /* ... */ }, modifier = Modifier.focusRequester(second) ) { Text("Second") } Button( onClick = { /* ... */ }, modifier = Modifier.focusRequester(third) ) { Text("Third") } }
התאמה אישית של סדר המעבר הדו-ממדי
באופן דומה, אפשר לשנות את ההתנהגות של מעבר דו-ממדי בין פריטים על ידי הקצאת מופעים של FocusRequester ל-up, down, start, end, left או right בתוך focusProperties:
val (topButton, bottomButton) = remember { FocusRequester.createRefs() } Button( onClick = { /* ... */ }, modifier = Modifier .focusRequester(topButton) .focusProperties { down = bottomButton right = bottomButton } ) { Text("Top button") } Button( onClick = { /* ... */ }, modifier = Modifier.focusRequester(bottomButton) ) { Text("Bottom button") }
כדי לחסום את הניווט במיקוד בכיוון מסוים (לדוגמה, בגבולות הפריסה), מקצים את הערך FocusRequester.Cancel למאפיין הזה (לדוגמה, down = FocusRequester.Cancel). כדי לשמור באופן מפורש על אלגוריתם ברירת המחדל של המערכת למעבר בכיוון מסוים, מקצים את הערך FocusRequester.Default.
מומלץ בשבילך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- יעדי מיקוד
- התמקדות בשדות טקסט
- יעדים להתמקדות בקבוצה
- הזזה וביטול של המיקוד
- בקשת מיקוד באופן פרוגרמטי
- בדיקת הניווט באמצעות המיקוד