Zaznaczanie pól tekstowych

Gdy użytkownicy poruszają się po interfejsie Compose za pomocą klawiatury, pada kierunkowego lub kontrolera obrotowego, pola tekstowe uczestniczą w nawigacji po elementach aktywnych razem z innymi elementami aktywnymi.

Domyślnie zaznaczenie nie jest blokowane w polach tekstowych. Nie musisz dodawać niestandardowych modułów obsługi zdarzeń klawiszy (onKeyEvent lub onPreviewKeyEvent), aby umożliwić użytkownikom opuszczenie pola tekstowego. Użytkownicy mogą zawsze wyjść z tego trybu, naciskając Shift + Tab lub przechodząc poza granice tekstu za pomocą klawiszy kierunkowych.

KeyboardOptions można użyć do zapewnienia intuicyjnego działania klawiatury ekranowej, które jest skoordynowane z nawigacją za pomocą klawiatury fizycznej. Na przykład ImeAction.Next przenosi zaznaczenie na następny element.

Jednowymiarowe przechodzenie fokusu

W przypadku jednowymiarowego przechodzenia między elementami zaznaczonymi działanie klawisza Tab zależy od właściwości lineLimits skonfigurowanej w polu tekstowym:

  • Jednowierszowe pola tekstowe (TextFieldLineLimits.SingleLine) Naciśnięcie klawisza Tab przenosi zaznaczenie na następny element interfejsu.
  • Wielowierszowe pola tekstowe (TextFieldLineLimits.MultiLine() lub domyślne): naciśnięcie klawisza Tab powoduje wstawienie znaku tabulacji (\t) do bufora tekstowego zamiast przeniesienia zaznaczenia.
  • Nawigacja wstecz (Shift + Tab): naciśnięcie klawiszy Shift + Tab bezwarunkowo przenosi zaznaczenie wstecz do poprzedniego celu zaznaczenia zarówno w jednowierszowych, jak i wielowierszowych polach tekstowych.

// Single-line text field: Tab advances focus to the next focus target
BasicTextField(
    state = singleLineState,
    lineLimits = TextFieldLineLimits.SingleLine,
    modifier = Modifier.fillMaxWidth()
)

// Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target
BasicTextField(
    state = multiLineState,
    lineLimits = TextFieldLineLimits.MultiLine(),
    modifier = Modifier.fillMaxWidth()
)

Dwuwymiarowe przechodzenie fokusa

Gdy używasz klawiszy strzałek (lub pada kierunkowego), klawisze kierunkowe najpierw przesuwają kursor tekstowy w polu tekstowym:

  • Nawigacja w pionie (w górę i w dół): naciśnięcie klawisza Down powoduje przesunięcie kursora w dół o 1 wiersz. Gdy kursor dotrze do ostatniego wiersza, ponowne naciśnięcie klawisza Strzałka w dół przeniesie zaznaczenie na sąsiedni element docelowy poniżej pola tekstowego. Naciśnięcie klawisza Strzałka w górę w pierwszym wierszu przenosi zaznaczenie na poprzedni element.
  • Nawigacja pozioma (w lewo / w prawo / początek / koniec): naciskanie klawiszy strzałek w poziomie powoduje przesuwanie kursora między znakami. Gdy kursor dotrze do początku lub końca bufora tekstu, ponowne naciśnięcie klawisza kierunkowego przeniesie zaznaczenie na sąsiedni element docelowy w tym kierunku.

Pola tekstowe na Androidzie TV

Na Androidzie TV, gdy używasz padów kierunkowych bez klawiatury fizycznej:

  1. Przeniesienie zaznaczenia na pole tekstowe powoduje automatyczne wyświetlenie klawiatury ekranowej.
  2. Użytkownik porusza się po klawiszach klawiatury ekranowej za pomocą pada kierunkowego.
  3. Naciśnięcie przycisku Wstecz powoduje zamknięcie klawiatury ekranowej, ale fokus pozostaje na polu tekstowym.
  4. Po zamknięciu klawiatury ekranowej naciśnięcie klawiszy kierunkowych pada kierunkowego powoduje przeniesienie zaznaczenia na sąsiednie elementy na ekranie.
  5. Ponowne naciśnięcie przycisku Wstecz powoduje uruchomienie standardowego przechodzenia wstecz systemu.