Programowe żądanie fokusu

W niektórych wzorcach przeglądania aplikacja musi wyraźnie przenieść zaznaczenie na konkretny komponent. Na przykład gdy użytkownik kliknie przycisk „Szukaj”, możesz automatycznie przenieść zaznaczenie na pole do wprowadzania danych.

Używanie FocusRequester

Aby wyraźnie poprosić o skupienie:

  1. Utwórz i zapamiętaj instancję FocusRequester: val focusRequester = remember { FocusRequester() }.
  2. Dołącz FocusRequester do docelowego elementu kompozycyjnego za pomocą modyfikatora focusRequester.
  3. Wywołaj funkcję requestFocus() w wywołaniu zwrotnym zdarzenia (np. onClick) lub w zakresie współprogramu.

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

Button(onClick = { focusRequester.requestFocus() }) {
    Text("Request focus on TextField")
}

Ustawianie początkowego fokusu ekranu

Aby ustawić początkowe zaznaczenie na konkretnym komponencie, gdy ekran pojawi się po raz pierwszy, wywołaj requestFocus() wewnątrz LaunchedEffect(Unit):

LaunchedEffect(Unit) {
    focusRequester.requestFocus()
}

Podczas przechodzenia między kontenerami lub powrotu z innego ekranu możesz też dołączyć focusRestorer() do kontenerów nadrzędnych, aby automatycznie przywracać zaznaczenie ostatniego zaznaczonego elementu podrzędnego. Więcej informacji znajdziesz w przewodniku Przywracanie zaznaczenia.