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 מושבת
- יעדי מיקוד
- סדר המעבר של המיקוד
- בקשת מיקוד באופן פרוגרמטי