Oprócz programowych metod wprowadzania danych, takich jak klawiatury ekranowe, Android obsługuje klawiatury fizyczne podłączone do urządzenia. Klawiatura to wygodny sposób wprowadzania tekstu oraz interakcji z aplikacją. Większość urządzeń przenośnych, takich jak telefony, wykorzystuje dotyk jako podstawowy sposób interakcji, ale tablety i podobne urządzenia są popularne, a wielu użytkowników lubi podłączać do nich klawiatury.
Coraz więcej urządzeń z Androidem oferuje taką możliwość, dlatego ważne jest, aby zoptymalizować aplikację pod kątem obsługi za pomocą klawiatury. Z tego dokumentu dowiesz się, jak ułatwić nawigację za pomocą klawiatury.
Testowanie aplikacji
Użytkownicy mogą już poruszać się po Twojej aplikacji za pomocą klawiatury, ponieważ system Android domyślnie umożliwia większość niezbędnych działań.
Wszystkie interaktywne widżety udostępniane przez platformę Android, takie jakButton iEditText, można zaznaczyć. Oznacza to, że użytkownicy mogą poruszać się po interfejsie za pomocą urządzeń sterujących, takich jak pad kierunkowy lub klawiatura, a każdy widżet świeci lub w inny sposób zmienia swój wygląd, gdy uzyska fokus.
Aby przetestować aplikację, wykonaj te czynności:
- Zainstaluj aplikację na urządzeniu z klawiaturą sprzętową.
Jeśli nie masz urządzenia z klawiaturą, podłącz klawiaturę Bluetooth lub klawiaturę USB.
Możesz też użyć emulatora Androida:
- W AVD Managerze kliknij New Device (Nowe urządzenie) lub wybierz istniejący profil i kliknij Clone (Klonuj).
- W wyświetlonym oknie upewnij się, że opcje Klawiatura i Pad kierunkowy są włączone.
- Aby przetestować aplikację, używaj tylko klawisza Tab do poruszania się po interfejsie. Upewnij się, że każdy element sterujący interfejsu uzyskuje fokus zgodnie z oczekiwaniami.
Zwróć uwagę na przypadki, w których zaznaczenie przesuwa się w nieoczekiwany sposób.
- Zacznij od początku aplikacji i poruszaj się po interfejsie za pomocą elementów sterujących kierunkiem, takich jak klawisze strzałek na klawiaturze. W przypadku każdego elementu interfejsu, na którym można skupić uwagę, naciśnij strzałkę w górę, w dół, w lewo i w prawo.
Zwróć uwagę na przypadki, w których zaznaczenie przesuwa się w nieoczekiwany sposób.
Jeśli napotkasz przypadki, w których nawigacja za pomocą klawisza Tab lub elementów sterujących kierunkiem nie działa zgodnie z oczekiwaniami, określ, gdzie w układzie ma się znajdować fokus, zgodnie z opisem w kolejnych sekcjach.
Obsługa nawigacji po kartach
Gdy użytkownik porusza się po aplikacji za pomocą klawisza Tab, system przekazuje fokus między elementami w kolejności, w jakiej pojawiają się one w układzie. Jeśli na przykład używasz układu względnego, a kolejność elementów na ekranie jest inna niż w pliku, może być konieczne ręczne określenie kolejności fokusu.
Na przykład w tym układzie 2 przyciski są wyrównane do prawej strony, a pole tekstowe jest wyrównane do lewej strony drugiego przycisku. Aby przekazać fokus z pierwszego przycisku do pola tekstowego, a następnie do drugiego przycisku, układ musi wyraźnie określać kolejność fokusu dla każdego elementu, na którym można ustawić fokus, za pomocą atrybutu android:nextFocusForward.
<androidx.constraintlayout.widget.ConstraintLayout ...> <Button android:id="@+id/button1" android:nextFocusForward="@+id/editText1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" ... /> <Button android:id="@+id/button2" android:nextFocusForward="@+id/button1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/button1" ... /> <EditText android:id="@id/editText1" android:nextFocusForward="@+id/button2" app:layout_constraintBottom_toBottomOf="@+id/button2" app:layout_constraintRight_toLeftOf="@id/button2 ... /> ... </androidx.constraintlayout.widget.ConstraintLayout>
Teraz zamiast przesuwać fokus z button1 na button2, a potem na editText1, przesuwa go prawidłowo zgodnie z wyświetlanymi elementami: z button1 na editText1, a potem na button2.
Obsługa nawigacji kierunkowej
Użytkownicy mogą też poruszać się po aplikacji za pomocą klawiszy strzałek na klawiaturze, co działa tak samo jak w przypadku nawigacji za pomocą pada kierunkowego lub trackballa. System „zgaduje”, na który widok należy przenieść zaznaczenie w danym kierunku, na podstawie układu widoków na ekranie. Czasami jednak system się myli.
Jeśli podczas nawigacji w danym kierunku system nie przekazuje fokusu do odpowiedniego widoku, określ, który widok ma otrzymać fokus, za pomocą tych atrybutów:
Każdy atrybut określa następny widok, który ma zostać zaznaczony, gdy użytkownik przejdzie w danym kierunku, zgodnie z identyfikatorem widoku. Pokazuje to poniższy przykład:
<Button android:id="@+id/button1" android:nextFocusRight="@+id/button2" android:nextFocusDown="@+id/editText1" ... /> <Button android:id="@id/button2" android:nextFocusLeft="@id/button1" android:nextFocusDown="@id/editText1" ... /> <EditText android:id="@id/editText1" android:nextFocusUp="@id/button1" ... />
Dodatkowe materiały
Zapoznaj się z tymi powiązanymi materiałami: