במצבי אינטראקציה מיוחדים (כמו אזור ציור מוטמע, משטח של שלט משחק או תיבת דו-שיח מודאלית להזנת קלט), יכול להיות שהאפליקציה תצטרך לנעול באופן זמני את המיקוד ברכיב אחד ולמנוע ניווט באמצעות מקש Tab או מקשי החיצים.
התמקדות בצילום
כדי להעביר את המיקוד, מפעילים את captureFocus() ב-FocusRequester:
val focusRequester = remember { FocusRequester() } Box( modifier = Modifier .focusRequester(focusRequester) .focusable() .onFocusChanged { focusState -> if (focusState.isFocused) { focusRequester.captureFocus() } } )
כשהמיקוד נלכד, מקשי הניווט הרגילים של המיקוד (כמו Tab) לא מעבירים את המיקוד לרכיבים סמוכים.
הפסקת המיקוד
כדי לצאת ממצב הלכידה ולחזור לניווט רגיל באמצעות מיקוד בממשק המשתמש, מפעילים את freeFocus():
IconButton( onClick = { focusRequester.freeFocus() } ) { Icon(Icons.Default.Close, contentDescription = "Exit focus lock") }
מומלץ בשבילך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- יעדי מיקוד
- יעדים להתמקדות בקבוצה
- בקשת מיקוד באופן פרוגרמטי