Fokus verschieben und löschen

Mit FocusManager können Sie den Fokus in eine bestimmte Richtung verschieben oder ganz aufheben. Verwenden Sie FocusRequester für das direkte Targeting von Komponenten (siehe Fokus programmatisch anfordern).

Fokusbewegung mit FocusManager

So verschieben Sie den Fokus programmatisch in eine relative Richtung:

  1. Rufen Sie die FocusManager-Instanz mit LocalFocusManager.current ab.
  2. Rufen Sie moveFocus() mit einem FocusDirection-Wert auf (Next, Previous, Up, Down, Left, Right, Enter oder Exit).

val focusManager = LocalFocusManager.current

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

Fokus löschen

Wenn Sie den Fokus von dem Element entfernen möchten, das ihn gerade hat (z. B. wenn der Nutzer die Esc-Taste drückt), rufen Sie clearFocus() auf:

val focusManager = LocalFocusManager.current

Box(
    modifier = Modifier.onPreviewKeyEvent { keyEvent ->
        if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) {
            focusManager.clearFocus()
            true
        } else {
            false
        }
    }
)

Die Funktion clearFocus() akzeptiert den optionalen Parameter force: Boolean = false:

  • force = false (Standard): Berücksichtigt Fokussperren und löscht den Fokus nicht, wenn die aktive Komponente den Fokus erfasst hat.
  • force = true: Löscht den Fokus bedingungslos, auch wenn eine Komponente den Fokus erfasst hat.