FocusManager ti consente di spostare lo stato attivo in modo direzionale o di cancellarlo completamente.
Utilizza FocusRequester per il targeting diretto dei componenti (consulta Richiedere lo stato attivo in modo programmatico).
Spostamento direzionale dello stato attivo 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 selezione
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(predefinito): rispetta i blocchi dello stato attivo e non cancella lo stato attivo se il componente attivo ha acquisito lo stato attivo.force = true: cancella incondizionatamente 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 spostamento dello stato attivo
- Richiedi lo stato attivo in modo programmatico