FocusManager ti consente di spostare il focus in una direzione o di cancellarlo completamente.
Utilizza FocusRequester per il targeting diretto dei componenti (vedi Richiedere il focus in modo programmatico).
Spostamento del focus direzionale con FocusManager
Per spostare lo stato attivo in modo programmatico in una direzione relativa:
- Ottieni l'istanza
FocusManagerutilizzandoLocalFocusManager.current. - Chiama
moveFocus()con un valoreFocusDirection(Next,Previous,Up,Down,Left,Right,EnteroExit).
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
Cancella messa a fuoco
Per rimuovere lo stato attivo dall'elemento che lo detiene attualmente
(ad esempio, quando l'utente preme il tasto Esc),
chiama clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
La funzione clearFocus() accetta un parametro force: Boolean = false
facoltativo:
force = false(impostazione predefinita): rispetta i blocchi della messa a fuoco e non la cancella se il componente attivo ha acquisito la messa a fuoco.force = true: rimuove in modo incondizionato lo stato attivo anche se un componente lo ha acquisito.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Target di messa a fuoco
- Ordine di attraversamento del focus
- Richiedere il focus in modo programmatico