Déplacer et effacer la sélection

FocusManager vous permet de déplacer le curseur de sélection dans une direction ou de le supprimer complètement. Utilisez FocusRequester pour cibler directement un composant (voir Demander la sélection par programmation).

Mouvement directionnel du curseur avec FocusManager

Pour déplacer le curseur de manière programmatique dans une direction relative :

  1. Obtenez l'instance FocusManager à l'aide de LocalFocusManager.current.
  2. Appelez moveFocus() avec une valeur FocusDirection (Next, Previous, Up, Down, Left, Right, Enter ou Exit).

val focusManager = LocalFocusManager.current

Button(
    onClick = {
        focusManager.moveFocus(FocusDirection.Next)
    }
) {
    Text("Next Field")
}

Effacer le focus

Pour supprimer la sélection de l'élément actuellement sélectionné (par exemple, lorsque l'utilisateur appuie sur la touche Échap), appelez 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 fonction clearFocus() accepte un paramètre force: Boolean = false facultatif :

  • force = false (par défaut) : respecte les verrouillages de sélection et n'efface pas la sélection si le composant actif a capturé la sélection.
  • force = true : efface la sélection de manière inconditionnelle, même si un composant a capturé la sélection.