In modalità di interazione specializzate (ad esempio un canvas di disegno incorporato, una superficie del controller di gioco o una finestra di dialogo di input modale), la tua app potrebbe dover bloccare temporaneamente lo stato attivo su un singolo componente e impedire la navigazione tramite i tasti Tab o direzionali.
Acquisizione della messa a fuoco
Per acquisire lo stato attivo, richiama captureFocus() su un FocusRequester:
val focusRequester = remember { FocusRequester() } Box( modifier = Modifier .focusRequester(focusRequester) .focusable() .onFocusChanged { focusState -> if (focusState.isFocused) { focusRequester.captureFocus() } } )
Mentre lo stato attivo è acquisito, i tasti di navigazione standard (ad esempio Tab) non spostano lo stato attivo sui componenti vicini.
Strategia incentrata sul lancio
Per uscire dallo stato di acquisizione e ripristinare la normale navigazione per stato attivo nell'intera UI,
chiama freeFocus():
IconButton( onClick = { focusRequester.freeFocus() } ) { Icon(Icons.Default.Close, contentDescription = "Exit focus lock") }
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Target di messa a fuoco
- Target di messa a fuoco del gruppo
- Richiedere il focus in modo programmatico