Capturer et relâcher la mise au point

Dans les modes d'interaction spécialisés (comme un canevas de dessin intégré, une surface de manette de jeu ou une boîte de dialogue d'entrée modale), votre application peut avoir besoin de verrouiller temporairement la mise au point sur un seul composant et d'empêcher la navigation à l'aide de la touche Tabulation ou des touches directionnelles.

Capturer le focus

Pour capturer le focus, appelez captureFocus() sur un FocusRequester :

val focusRequester = remember { FocusRequester() }

Box(
    modifier = Modifier
        .focusRequester(focusRequester)
        .focusable()
        .onFocusChanged { focusState ->
            if (focusState.isFocused) {
                focusRequester.captureFocus()
            }
        }
)

Lorsque la sélection est capturée, les touches de navigation standard (telles que Tabulation) ne déplacent pas la sélection vers les composants voisins.

Priorité de la version

Pour quitter l'état de capture et restaurer la navigation normale au clavier dans l'UI, appelez freeFocus() :

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