Fokus erfassen und loslassen

In speziellen Interaktionsmodi (z. B. eingebettete Zeichenfläche, Gamecontroller-Oberfläche oder modaler Eingabedialog) muss Ihre App möglicherweise vorübergehend den Fokus auf eine einzelne Komponente sperren und verhindern, dass Nutzer mit der Tabulatortaste oder den Richtungstasten weg navigieren.

Fokus erfassen

Wenn Sie den Fokus erfassen möchten, rufen Sie captureFocus() für ein FocusRequester auf:

val focusRequester = remember { FocusRequester() }

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

Während der Fokus erfasst wird, wird er durch Standard-Fokusnavigationstasten (z. B. Tab) nicht auf benachbarte Komponenten verschoben.

Fokus auf Veröffentlichung

Wenn Sie den erfassten Zustand beenden und die normale Fokusnavigation in der Benutzeroberfläche wiederherstellen möchten, rufen Sie freeFocus() auf:

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