בחלק ממסלולי המשתמש, האפליקציה צריכה להעביר את המיקוד באופן מפורש לרכיב ספציפי. לדוגמה, כשמשתמש לוחץ על כפתור "חיפוש", יכול להיות שתרצו להעביר את המיקוד באופן אוטומטי לשדה להזנת קלט של החיפוש.
שימוש ב-FocusRequester
כדי לבקש במפורש להתמקד:
- יוצרים וזוכרים מכונה של
FocusRequester:val focusRequester = remember { FocusRequester() }. - מצרפים את
FocusRequesterלרכיב הקומפוזבילי של היעד באמצעות המשתנהfocusRequester. - קוראים ל-
requestFocus()בתוך קריאה חוזרת (callback) של אירוע (כמוonClick) או היקף של coroutine.
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) )
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) ) Button(onClick = { focusRequester.requestFocus() }) { Text("Request focus on TextField") }
הגדרת המיקוד הראשוני של המסך
כדי להגדיר את המיקוד הראשוני ברכיב ספציפי כשמסך מופיע בפעם הראשונה, מפעילים את requestFocus() בתוך LaunchedEffect(Unit):
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
כשמנווטים בין קונטיינרים או חוזרים ממסך אחר, אפשר גם לצרף את focusRestorer() לקונטיינרים הורים כדי להחזיר את המיקוד באופן אוטומטי לצאצא האחרון שהיה במיקוד.
מידע נוסף זמין במדריך החזרת המיקוד.
מומלץ בשבילך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- יעדי מיקוד
- יעדים להתמקדות בקבוצה
- החזרת המיקוד
- הזזה וביטול של המיקוד