Fokus erfassen und loslassen

In speziellen Interaktionsmodi (z. B. einem eingebetteten Zeichenbereich, einer Gamecontroller-Oberfläche oder einem modalen Eingabedialogfeld) muss der Fokus möglicherweise vorübergehend auf eine einzelne Komponente beschränkt werden, sodass die Navigation mit der Tabulatortaste oder den Richtungstasten nicht möglich ist.

Fokus der Aufnahme

Rufen Sie captureFocus() für ein FocusRequester auf, um den Fokus zu erfassen:

val focusRequester = remember { FocusRequester() }

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

Wenn der Fokus erfasst wird, wird er durch die Standardtasten für die Fokusnavigation (z. B. Tab) nicht auf benachbarte Komponenten verschoben.

Fokus auf die Veröffentlichung

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

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