Gdy użytkownicy poruszają się po interfejsie Compose za pomocą klawiatury sprzętowej, pada kierunkowego lub kontrolera obrotowego, pola tekstowe uczestniczą w nawigacji za pomocą fokusu wraz z innymi elementami, na których można ustawić fokus.
Domyślnie fokus nie jest blokowany w polach tekstowych. Aby umożliwić użytkownikom opuszczenie pola tekstowego, nie musisz dodawać niestandardowych procedur obsługi zdarzeń klawiszy (onKeyEvent lub onPreviewKeyEvent). Użytkownicy mogą zawsze wyjść z tego trybu, naciskając Shift+Tab lub przechodząc poza granice tekstu za pomocą klawiszy kierunkowych.
KeyboardOptions może służyć do zapewnienia intuicyjnego działania klawiatury ekranowej, które jest skoordynowane z nawigacją za pomocą klawiatury sprzętowej.
ImeAction.Next przenosi zaznaczenie na następny element, na którym można ustawić fokus.
Przechodzenie fokusu w jednym wymiarze
W przypadku jednowymiarowego przechodzenia między elementami za pomocą klawisza Tab jego działanie zależy od wartości parametru lineLimits skonfigurowanego w polu tekstowym:
- Pola tekstowe jedno wierszowe (
TextFieldLineLimits.SingleLine) Naciśnięcie klawisza Tab przenosi zaznaczenie na kolejny element interfejsu, na którym można skupić uwagę. - Pola tekstowe wielowierszowe (
TextFieldLineLimits.MultiLine()lub domyślne): naciśnięcie klawisza Tab wstawia do bufora tekstu znak tabulacji (\t), zamiast przenosić zaznaczenie. - Nawigacja wsteczna (Shift+Tab): naciśnięcie Shift+Tab bezwarunkowo przenosi zaznaczenie wstecz do poprzedniego elementu, na którym można ustawić fokus, 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() )
Przechodzenie między elementami w 2D
Podczas korzystania z klawiszy strzałek (lub pada kierunkowego) klawisze kierunkowe najpierw przesuwają kursor tekstowy (caret) w polu tekstowym:
- Nawigacja w pionie (w górę lub w dół): naciśnięcie klawisza
Downpowoduje przesunięcie kursora w dół o jeden wiersz. Gdy kursor dotrze do ostatniego wiersza, ponowne naciśnięcie klawisza w dół przeniesie zaznaczenie na sąsiedni element poniżej pola tekstowego. Naciśnięcie klawisza w górę w pierwszym wierszu przenosi zaznaczenie na poprzedni element. - Nawigacja w poziomie (lewo / prawo / początek / koniec): naciśnięcie klawiszy strzałek w poziomie przesuwa kursor 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 w tym kierunku.
Pola tekstowe na Androidzie TV
Na Androidzie TV przy użyciu kontrolerów z padem kierunkowym bez klawiatury fizycznej:
- Przeniesienie zaznaczenia do pola tekstowego powoduje automatyczne wyświetlenie klawiatury ekranowej.
- Użytkownik porusza się po klawiszach klawiatury ekranowej za pomocą pada kierunkowego.
- Naciśnięcie przycisku Wstecz powoduje zamknięcie klawiatury ekranowej, ale fokus pozostaje w polu tekstowym.
- Po zamknięciu klawiatury ekranowej naciśnięcie klawiszy kierunkowych na padzie D-pad przenosi zaznaczenie na sąsiednie elementy na ekranie.
- Ponowne naciśnięcie przycisku Wstecz powoduje standardowe przechodzenie wstecz w systemie.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- Punkty ostrości
- Kolejność przechodzenia między elementami
- Cele skupienia grupy
- Testowanie nawigacji za pomocą fokusu