Element docelowy zaznaczenia to element interfejsu, na który można przenieść zaznaczenie klawiatury. Użytkownicy mogą przenosić fokus klawiatury za pomocą klawisza Tab lub klawiszy strzałek:
- Tab lub Shift+Tab – przenosi zaznaczenie do przodu lub do tyłu w jednowymiarowej kolejności wyświetlania.
- Klawisze kierunkowe – przenoszenie fokusu w dwóch wymiarach (w górę, w dół, w lewo i w prawo).
Interaktywne elementy interfejsu są domyślnie celami zaznaczenia.
Element interaktywny jest domyślnie celem, na którym można się skupić. Innymi słowy, element interfejsu jest celem, na którym można się skupić, jeśli użytkownicy mogą go kliknąć lub dotknąć.
Rozważmy na przykład 3 komponenty Karta. Jeśli pierwsza i trzecia karta są interaktywne (definiują wywołanie zwrotne onClick), ale druga karta ma charakter wyłącznie informacyjny (nie obsługuje kliknięć), naciśnięcie klawisza Tab na pierwszej karcie spowoduje pominięcie drugiej karty i przejście bezpośrednio do trzeciej.
Card(onClick = { /* First card action */ }) { Text("Card 1 (Interactive)") } Card { Text("Card 2 (Informational - not focusable)") } Card(onClick = { /* Third card action */ }) { Text("Card 3 (Interactive)") }
Możesz ustawić drugą kartę jako cel, podając parametr onClick:
Card(onClick = { /* Second card action */ }) { Text("Card 2 (Now interactive and focusable)") }
Modyfikator clickable przekształca też niestandardowe lub standardowe elementy interfejsu w obiekty, na których można skupić uwagę. Więcej informacji znajdziesz w sekcji Dotykanie i przytrzymywanie.
Box( modifier = Modifier .clickable { /* Handle click */ } ) { Text("Custom interactive element") }
Ustawianie komponentu kompozycyjnego jako nieklikanej pozycji, na której można ustawić fokus
Modyfikator focusable sprawia, że komponent staje się celem, na którym można ustawić fokus, bez konieczności stosowania semantyki kliknięcia. Użytkownicy mogą przenieść fokus klawiatury na zmodyfikowany komponent (np. aby sprawdzić treść za pomocą narzędzi ułatwień dostępu lub przewinąć widok), ale naciśnięcie klawiszy Enter lub Spacja nie powoduje kliknięcia:
Box( modifier = Modifier .focusable() ) { Text("Non-clickable focus target") }
Ustawienie elementu kompozycyjnego jako nieaktywnego
W niektórych przypadkach możesz chcieć wykluczyć element interaktywny z nawigacji za pomocą klawiatury bez wyłączania zdarzeń wskaźnika lub kliknięcia. Aby uniemożliwić komponentowi otrzymywanie fokusu, ustaw wartość canFocus = false w modyfikatorze focusProperties:
var checked by remember { mutableStateOf(false) } Switch( checked = checked, onCheckedChange = { checked = it }, // Prevent component from being focused modifier = Modifier .focusProperties { canFocus = false } )
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- Kolejność przechodzenia między elementami
- Skupianie się na polach tekstowych
- Cele skupienia grupy
- Wskazywanie stanu aktywności
- Testowanie nawigacji za pomocą fokusu