Uchwyć i zwolnij fokus

W specjalistycznych trybach interakcji (np. w przypadku wbudowanego obszaru rysowania, powierzchni kontrolera do gier lub modalnego okna dialogowego wprowadzania danych) aplikacja może tymczasowo blokować fokus na jednym komponencie i uniemożliwiać nawigację za pomocą klawisza Tab lub klawiszy kierunkowych.

Zaznaczanie

Aby zaznaczyć element, wywołaj captureFocus() na elemencie FocusRequester:

val focusRequester = remember { FocusRequester() }

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

Gdy fokus jest przechwycony, standardowe klawisze nawigacji (np. Tab) nie przenoszą zaznaczenia do sąsiednich komponentów.

Zwolnij fokus

Aby wyjść ze stanu przechwytywania i przywrócić normalną nawigację przy użyciu zaznaczenia w interfejsie, wywołaj funkcję freeFocus():

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