Obsługa nawigacji za pomocą klawiatury

Oprócz metod wprowadzania danych bezdotykowych, takich jak klawiatury ekranowe, Android obsługuje też klawiatury fizyczne podłączone do urządzenia. Klawiatura zapewnia wygodny tryb wprowadzania tekstu i umożliwia użytkownikom nawigację po aplikacji i interakcję z nią. Chociaż większość urządzeń przenośnych, takich jak telefony, używa dotykowego interfejsu jako głównego trybu interakcji, tablety i podobne urządzenia są popularne, a wielu użytkowników lubi dołączać do nich klawiatury.

Coraz więcej urządzeń z Androidem oferuje takie możliwości, dlatego warto zoptymalizować aplikację pod kątem obsługi za pomocą klawiatury. Z tego dokumentu dowiesz się, jak ulepszyć nawigację za pomocą klawiatury.

Testowanie aplikacji

Użytkownicy mogą już poruszać się po aplikacji za pomocą klawiatury, ponieważ system Android domyślnie włącza większość niezbędnych zachowań.

Wszystkie interaktywne widżety udostępniane przez platformę Androida, takie jak ButtonEditText, można ustawić w centrum. Oznacza to, że użytkownicy mogą poruszać się po interfejsie za pomocą urządzeń sterujących, takich jak pad kierunkowy lub klawiatura. Każdy widżet świeci lub zmienia swój wygląd, gdy zyskuje fokus.

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 upewnij się, że włączone są opcje KlawiaturaD-pad.
  2. Aby przetestować aplikację, nawiguj po interfejsie za pomocą tylko klawisza Tab. Upewnij się, że każde pole sterujące interfejsu użytkownika jest aktywne zgodnie z oczekiwaniami.

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

  3. Zacznij od początku aplikacji i przechodź przez interfejs, używając elementów sterujących, takich jak klawisze strzałek na klawiaturze. W przypadku każdego elementu w interfejsie, który można zaznaczyć, naciśnij W górę, W dół, W lewoW prawo.

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

Jeśli zdarzy się, że poruszanie się za pomocą klawisza Tab lub elementów sterujących kierunkiem nie działa zgodnie z oczekiwaniami, określ, gdzie w układzie musi znajdować się punkt skupienia, jak opisano w następnych sekcjach.

Obsługa nawigacji po kartach

Gdy użytkownik porusza się po aplikacji za pomocą klawisza Tab, system przenosi fokus wprowadzania między elementami w zależności od kolejności ich występowania w układzie. Jeśli na przykład używasz układu względnego, a kolejność elementów na ekranie różni się od kolejności w pliku, konieczne może być ręczne określenie kolejności na potrzeby funkcji ostrości.

Na przykład w tym układzie 2 przyciski są wyrównane po prawej stronie, a pole tekstowe po lewej stronie drugiego przycisku. Aby przekazać fokus z pierwszego przycisku na pole tekstowe, a potem na drugi przycisk, układ musi wyraźnie określić kolejność elementów, które mogą być zaznaczane, 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 przemieszczania punktu ostrości z button1 na button2, a potem na editText1, punkt ten przesuwa się odpowiednio do tego, co jest widoczne 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, które działają tak samo jak przy korzystaniu z joysticka lub trackballa. System wybiera „najlepszy widok” 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 przekaże fokusu do odpowiedniego widoku, określ, który widok musi zostać zaznaczony, za pomocą tych atrybutów:

Każdy atrybut wskazuje następny widok, który ma zostać wyświetlony, gdy użytkownik przejdzie w określonym kierunku, zgodnie z określonym identyfikatorem widoku. 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 materiałami: