Mit FocusManager können Sie den Fokus in eine bestimmte Richtung verschieben oder ganz entfernen.
Verwenden Sie FocusRequester für das direkte Targeting von Komponenten (siehe Fokus programmatisch anfordern).
Bewegung des Richtungsfokus mit FocusManager
So verschieben Sie den Fokus programmatisch in eine relative Richtung:
- Rufen Sie die
FocusManager-Instanz mitLocalFocusManager.currentab. - Rufen Sie
moveFocus()mit einemFocusDirection-Wert (Next,Previous,Up,Down,Left,Right,EnteroderExit) auf.
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
Klarer Fokus
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): Beachtet Fokus-Sperren und löscht den Fokus nicht, wenn die aktive Komponente den Fokus erfasst hat.force = true: Der Fokus wird bedingungslos entfernt, auch wenn eine Komponente den Fokus erfasst hat.
Empfehlungen für Sie
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist
- Fokusziele
- Reihenfolge des Fokusdurchlaufs
- Fokus programmatisch anfordern