במסלולי משתמשים מסוימים, האפליקציה צריכה להעביר את המיקוד באופן מפורש לרכיב ספציפי. לדוגמה, כשמשתמש לוחץ על לחצן 'חיפוש', יכול להיות שתרצו להעביר את המיקוד באופן אוטומטי לשדה להזנת קלט של החיפוש.
שימוש ב-FocusRequester
כדי לבקש מיקוד באופן מפורש:
- יוצרים מופע של
FocusRequesterוזוכרים אותו:val focusRequester = remember { FocusRequester() }. - מצרפים את
FocusRequesterלרכיב הקומפוזבילי של היעד באמצעות משנה המאפייניםfocusRequester. - מתקשרים אל
requestFocus()בתוך קריאה חוזרת (callback) של אירוע (כמוonClick) או בתוך היקף של קורוטינה.
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 מושבת
- יעדי התמקדות
- קיבוץ יעדים להתמקדות
- שחזור הפוקוס
- הזזה והסרת המיקוד