FocusManager מאפשרת להזיז את הפוקוס לכיוון מסוים או לבטל אותו לגמרי.
משתמשים ב-FocusRequester לטירגוט ישיר של רכיב (ראו בקשת מיקוד באופן פרוגרמטי).
הזזת המיקוד בכיוון מסוים באמצעות FocusManager
כדי להעביר את המיקוד באופן פרוגרמטי בכיוון יחסי:
- מקבלים את המופע של
FocusManagerבאמצעותLocalFocusManager.current. - מאפיין מספר הטלפון לשיחה
moveFocus()עם ערךFocusDirection(Next,Previous,Up,Down,Left,Right,EnterאוExit).
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
ניקוי המיקוד
כדי להסיר את המיקוד מהאלמנט שמוגדר כרגע (לדוגמה, כשמשתמש לוחץ על המקש Esc), צריך להתקשר אל clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
הפונקציה clearFocus() מקבלת פרמטר אופציונלי force: Boolean = false:
-
force = false(ברירת מחדל): מכבד את נעילות המיקוד ולא ינקה את המיקוד אם הרכיב הפעיל תפס את המיקוד. -
force = true: מנקה את המיקוד ללא תנאי, גם אם רכיב מסוים תפס את המיקוד.
מומלץ בשבילכם
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- יעדי התמקדות
- סדר מעבר בין רכיבים
- בקשת מיקוד באופן פרוגרמטי