Mendukung navigasi keyboard

Selain metode input virtual—seperti keyboard di layar—Android mendukung keyboard fisik yang terpasang ke perangkat. Keyboard menawarkan mode yang mudah untuk input teks serta cara bagi pengguna untuk membuka dan berinteraksi dengan aplikasi Anda. Meskipun sebagian besar perangkat genggam seperti ponsel menggunakan sentuhan sebagai mode interaksi utama, tablet dan perangkat serupa sangat populer, dan banyak pengguna suka memasang aksesori keyboard ke perangkat tersebut.

Karena semakin banyak perangkat Android yang menawarkan pengalaman semacam ini, penting bagi Anda untuk mengoptimalkan aplikasi guna mendukung interaksi melalui keyboard. Dokumen ini menjelaskan cara meningkatkan navigasi dengan keyboard.

Uji aplikasi

Pengguna mungkin sudah dapat melakukan navigasi aplikasi Anda menggunakan keyboard, karena sistem Android memungkinkan sebagian besar perilaku yang diperlukan secara default.

Semua widget interaktif yang disediakan oleh framework Android—seperti Button dan EditText—dapat difokus. Artinya, pengguna dapat bernavigasi dengan perangkat kontrol seperti D-pad atau keyboard, dan setiap widget akan menyala atau mengubah tampilannya saat mendapatkan fokus input.

Untuk menguji aplikasi Anda, lakukan prosedur berikut:

  1. Instal aplikasi Anda di perangkat yang menawarkan keyboard hardware.

    Jika Anda tidak memiliki perangkat hardware dengan keyboard, hubungkan keyboard Bluetooth atau keyboard USB.

    Anda juga dapat menggunakan emulator Android:

    1. Di AVD Manager, klik New Device atau pilih profil yang ada, lalu klik Clone.
    2. Di jendela yang muncul, pastikan Keyboard dan DPad aktif.
  2. Untuk menguji aplikasi Anda, hanya gunakan tombol Tab untuk menjelajahi UI Anda. Pastikan setiap kontrol UI mendapatkan fokus seperti yang diharapkan.

    Cari instance saat fokus bergerak dengan cara yang tidak terduga.

  3. Mulai lagi dari awal aplikasi dan jelajahi UI menggunakan kontrol rute seperti tombol panah pada keyboard. Dari setiap elemen yang dapat difokuskan di UI Anda, tekan Atas, Bawah, Kiri, dan Kanan.

    Cari instance saat fokus bergerak dengan cara yang tidak terduga.

Jika Anda menemukan situasi ketika navigasi dengan tombol Tab atau kontrol arah tidak melakukan hal yang diharapkan, tentukan posisi fokus dalam tata letak Anda, seperti yang dibahas di bagian berikut.

Menangani navigasi tab

Saat pengguna menavigasi aplikasi Anda menggunakan tombol Tab keyboard, sistem akan meneruskan fokus input di antara elemen berdasarkan urutan kemunculannya dalam tata letak. Misalnya, jika Anda menggunakan tata letak relatif dan urutan elemen di layar berbeda dengan urutan dalam file, Anda mungkin perlu menentukan urutan fokus secara manual.

Misalnya, dalam tata letak berikut, dua tombol disejajarkan ke sisi kanan, dan kolom teks disejajarkan di sebelah kiri tombol kedua. Untuk meneruskan fokus dari tombol pertama ke kolom teks, lalu ke tombol kedua, tata letak harus secara eksplisit menentukan urutan fokus untuk setiap elemen yang dapat difokuskan dengan atribut 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>

Sekarang, alih-alih berpindah dari button1 ke button2 lalu editText1, fokus akan bergerak tepat sesuai dengan tampilan di layar: dari button1 ke editText1, lalu button2.

Menangani navigasi terarah

Pengguna juga dapat membuka aplikasi Anda menggunakan tombol panah pada keyboard, yang berperilaku sama seperti saat melakukan navigasi dengan D-pad atau trackball. Sistem memberikan "tebakan terbaik" untuk tampilan mana yang akan difokuskan ke arah tertentu berdasarkan tata letak tampilan di layar. Namun, terkadang sistem salah menebak.

Jika sistem tidak meneruskan fokus ke tampilan yang sesuai saat menavigasi ke arah tertentu, tentukan tampilan mana yang harus menerima fokus dengan atribut berikut:

Setiap atribut menetapkan tampilan berikutnya untuk menerima fokus saat pengguna melakukan navigasi ke arah tersebut, seperti yang ditetapkan oleh ID tampilan. Hal ini ditunjukkan dalam contoh berikut:

<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"
    ...  />

Referensi lainnya

Lihat referensi terkait berikut ini: