Acquisisci e rilascia lo stato attivo

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), l'app potrebbe dover bloccare temporaneamente lo stato attivo su un singolo componente e impedire la navigazione con il tasto Tab o i tasti direzionali.

Acquisisci lo stato attivo

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 (come Tab) non spostano lo stato attivo sui componenti adiacenti.

Focus sulla release

Per uscire dallo stato di acquisizione e ripristinare la normale navigazione per stato attivo nell'interfaccia utente, chiama freeFocus():

IconButton(
    onClick = {
        focusRequester.freeFocus()
    }
) {
    Icon(Icons.Default.Close, contentDescription = "Exit focus lock")
}