Obsługa nawigacji za pomocą klawiatury

Oprócz stosowania metody programowego wprowadzania danych, np. klawiatury ekranowej, Android obsługuje klawiatury fizyczne podłączone do urządzenia. Klawiatura zapewnia wygodny tryb wprowadzania tekstu oraz umożliwia użytkownikom poruszanie się po aplikacji i korzystanie z niej. Chociaż większość urządzeń mobilnych, takich jak telefony, głównym trybem interakcji jest dotyk, popularne są tablety i podobne urządzenia. Wielu użytkowników mocuje do nich akcesoria do klawiatury.

Coraz więcej urządzeń z Androidem oferuje takie możliwości, dlatego tak ważne jest zoptymalizowanie aplikacji pod kątem obsługi interakcji z klawiaturą. Z tego artykułu dowiesz się, jak poprawić nawigację przy użyciu klawiatury.

Testowanie aplikacji

Użytkownicy mogą już poruszać się po aplikacji za pomocą klawiatury, ponieważ system Android domyślnie umożliwia wykonywanie większości niezbędnych działań.

Wszystkie interaktywne widżety dostarczane przez platformę Androida, takie jak Button i EditText, można aktywować. Oznacza to, że użytkownicy mogą nawigować 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 jest aktywny.

Aby przetestować aplikację, wykonaj te czynności:

  1. 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:

    1. W Menedżerze AVD kliknij Nowe urządzenie lub wybierz istniejący profil i kliknij Klonuj.
    2. W wyświetlonym oknie sprawdź, czy opcje Klawiatura i DPad są włączone.
  2. Aby przetestować aplikację, poruszaj się po interfejsie użytkownika tylko za pomocą klawisza Tab. Upewnij się, że każdy element sterujący interfejsu jest aktywny zgodnie z oczekiwaniami.

    Poszukaj przypadków, w których zaznaczenie przesuwa się w nieoczekiwany sposób.

  3. Zacznij od początku aplikacji i poruszaj się po interfejsie, korzystając z elementów sterujących kierunkami, takich jak klawisze strzałek na klawiaturze. Z każdego elementu, który można zaznaczyć, naciśnij w górę, w dół, w lewo i w prawo.

    Poszukaj przypadków, w których zaznaczenie przesuwa się w nieoczekiwany sposób.

Jeśli natrafisz na przypadki, w których nawigacja za pomocą klawisza Tab lub sterowania kierunkiem nie działa zgodnie z oczekiwaniami, określ, gdzie trzeba się skupić w układzie zgodnie z opisem w kolejnych sekcjach.

Uchwyt na nawigację po kartach

Gdy użytkownik porusza się po aplikacji za pomocą klawisza Tab na klawiaturze, system przechodzi fokus między elementami na podstawie kolejności ich występowania w układzie. Jeśli np. używasz układu względnego, a kolejność elementów na ekranie jest inna niż w pliku, być może trzeba będzie ręcznie określić kolejność zaznaczenia.

Na przykład w tym układzie 2 przyciski są wyrównane po prawej stronie, a pole tekstowe jest wyrównane z lewej strony drugiego przycisku. Aby przenieść zaznaczenie z pierwszego przycisku na pole tekstowe, a następnie do drugiego przycisku, układ musi wyraźnie określać kolejność zaznaczenia poszczególnych elementów 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 przenosić zaznaczenie z button1 na button2, a potem z editText1, przesuwa się on zgodnie z wyglądem na ekranie: 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 przy użyciu pada kierunkowego czy kulki. System proponuje „najbardziej prawdopodobny”, który widok, w którym należy się skupić w danym kierunku, na podstawie układu widoków na ekranie. Czasem jednak system błędnie ocenia.

Jeśli podczas nawigowania w danym kierunku system nie przejmie odpowiedniego widoku, określ, który widok musi zostać wyróżniony, korzystając z tych atrybutów:

Każdy atrybut wskazuje następny widok, który zostanie zaznaczony, gdy użytkownik przejdzie w tym kierunku, zgodnie z jego identyfikatorem. Widać to w tym przykładzie:

<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: