W sekcji Domyślna kolejność przemierzania zaznaczenia opisano, jak funkcja Utwórz automatycznie dodaje do elementów funkcję przechodzenia po zaznaczeniu, zarówno w przypadku nawigacji jednowymiarowej (klawisz tab
), jak i dwuwymiarowej (klawisze strzałek). W niektórych przypadkach może być konieczne zastąpienie tego domyślnego działania i podanie dokładniejszych informacji o wymaganej kolejności przemierzania.
Zastąp jednowymiarową kolejność przechodzenia
Aby zmienić domyślną kolejność przechodzenia przez zaznaczenie w nawigacji jednowymiarowej, utwórz zestaw odwołań, po jednym dla każdego elementu kompozycyjnego, który można zaznaczyć:
val (first, second, third, fourth) = remember { FocusRequester.createRefs() }
Następnie użyj modyfikatora focusRequester
, aby powiązać każdy z nich z funkcją kompozycyjną:
Column { Row { TextButton({}, Modifier.focusRequester(first)) { Text("First field") } TextButton({}, Modifier.focusRequester(third)) { Text("Third field") } } Row { TextButton({}, Modifier.focusRequester(second)) { Text("Second field") } TextButton({}, Modifier.focusRequester(fourth)) { Text("Fourth field") } } }
Możesz teraz użyć modyfikatora focusProperties
, by określić niestandardową kolejność przechodzenia między elementami:
Column { Row { TextButton( {}, Modifier .focusRequester(first) .focusProperties { next = second } ) { Text("First field") } TextButton( {}, Modifier .focusRequester(third) .focusProperties { next = fourth } ) { Text("Third field") } } Row { TextButton( {}, Modifier .focusRequester(second) .focusProperties { next = third } ) { Text("Second field") } TextButton( {}, Modifier .focusRequester(fourth) .focusProperties { next = first } ) { Text("Fourth field") } } }
Zastąp dwuwymiarową kolejność przechodzenia
Możesz też dodać precyzyjną kontrolę nad kolejnością przechodzenia pomiędzy fokusem, aby umożliwić dwuwymiarową nawigację za pomocą klawiszy strzałek. W przypadku każdego elementu możesz zastąpić domyślne miejsce docelowe nawigacji w przypadku poszczególnych wskazówek, dodając modyfikator focusProperties
i wskazując element, który będzie się pojawiać, w dół lub w dowolnym innym kierunku:
TextButton( onClick = {}, modifier = Modifier .focusRequester(fourth) .focusProperties { down = third right = second } ) {}
Ta technika nie tylko skutecznie korzysta ze strzałek na klawiaturze, ale będzie też działać z padami kierunkowymi i gałkami do kontrolerów przewodowych i bezprzewodowych.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony
- Zmienianie działania skupienia
- Przejdź do tworzenia wiadomości