Déplacer et effacer la sélection

FocusManager vous permet de déplacer la sélection de manière directionnelle ou de la supprimer complètement. Utilisez FocusRequester pour cibler directement un composant (voir Demander la sélection de manière programmatique).

Mouvement directionnel du curseur avec FocusManager

Pour déplacer la sélection 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")
}

Netteté

Pour supprimer la mise au point de l'élément qui la détient actuellement (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 la mise au point et ne l'efface pas si le composant actif a capturé la mise au point.
  • force = true : efface inconditionnellement la sélection, même si un composant a capturé la sélection.