Mendukung navigasi keyboard

Selain metode input virtual—seperti keyboard virtual—Android mendukung keyboard fisik yang terpasang pada perangkat. Keyboard menawarkan mode yang nyaman untuk input teks dan cara bagi pengguna untuk menavigasi 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 makin banyak perangkat Android yang menawarkan pengalaman semacam ini, Anda harus mengoptimalkan aplikasi untuk mendukung interaksi melalui keyboard. Dokumen ini menjelaskan cara meningkatkan navigasi dengan keyboard.

Menguji aplikasi

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

Semua widget interaktif yang disediakan oleh framework Android—seperti Button dan EditText—dapat difokuskan. Ini berarti pengguna dapat melakukan navigasi dengan perangkat kontrol seperti D-pad atau keyboard, dan setiap widget akan menyala atau mengubah tampilannya jika mendapatkan fokus input.

Untuk menguji aplikasi Anda, lakukan prosedur berikut:

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

    Jika 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 diaktifkan.
  2. Untuk menguji aplikasi Anda, hanya gunakan tombol Tab untuk membuka UI. 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 arah seperti tombol panah pada keyboard. Dari setiap elemen yang dapat difokuskan dalam UI Anda, tekan Atas, Bawah, Kiri, dan Kanan.

    Cari instance saat fokus bergerak dengan cara yang tidak terduga.

Jika Anda menemukan instance saat menavigasi dengan tombol Tab atau kontrol arah tidak melakukan apa yang Anda harapkan, tentukan tempat fokus harus berada 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 munculnya dalam tata letak. Misalnya, jika Anda menggunakan tata letak relatif, dan urutan elemen di layar berbeda dari urutan dalam file, Anda mungkin perlu menentukan urutan fokus secara manual.

Misalnya, dalam tata letak berikut, dua tombol disejajarkan di 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 menentukan urutan fokus secara eksplisit 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, fokus tidak akan berpindah dari button1 ke button2, lalu editText1, tetapi akan berpindah sesuai dengan tampilan di layar: dari button1 ke editText1, lalu button2.

Menangani navigasi terarah

Pengguna juga dapat menavigasi aplikasi Anda menggunakan tombol panah di keyboard, yang berperilaku sama seperti saat menavigasi dengan D-pad atau trackball. Sistem memberikan "perkiraan terbaik" untuk tampilan mana yang akan diberi fokus dalam 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 akan menunjuk tampilan berikutnya agar menerima fokus saat pengguna menavigasi ke arah tersebut, seperti yang ditentukan 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: