Mendukung navigasi keyboard

Mencoba cara Compose
Jetpack Compose adalah toolkit UI yang direkomendasikan untuk Android. Pelajari cara menggunakan sentuhan dan input di Compose.

Selain metode input virtual—seperti keyboard virtual—Android juga mendukung keyboard fisik yang terpasang pada perangkat. Keyboard menawarkan mode yang praktis 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 sejenis kini makin populer, dan banyak pengguna yang suka memasang aksesori keyboard.

Karena makin banyak perangkat Android yang menawarkan pengalaman semacam ini, Anda harus mengoptimalkan aplikasi guna 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 mengaktifkan sebagian besar perilaku yang diperlukan secara default.

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, sambungkan 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, gunakan hanya tombol Tab untuk menavigasi UI. Pastikan setiap kontrol UI mendapatkan fokus seperti yang diharapkan.

    Cari semua instance saat fokus berpindah dengan cara yang tidak terduga manner.

  3. Mulai lagi dari awal aplikasi Anda dan navigasikan UI menggunakan kontrol arah seperti tombol panah di keyboard. Dari setiap elemen yang dapat difokuskan dalam UI Anda, tekan Up, Down, Left, dan Right.

    Cari semua instance saat fokus berpindah dengan cara yang tidak terduga manner.

Jika Anda menemukan instance saat navigasi dengan tombol Tab atau kontrol arah tidak melakukan hal yang Anda harapkan, tentukan tempat fokus harus berada di tata letak Anda, seperti yang dibahas di bagian berikut.

Menangani navigasi tab

Saat pengguna melakukan navigasi aplikasi Anda dengan tombol Tab keyboard, sistem akan meneruskan fokus input di antara elemen-elemen berdasarkan urutan munculnya dalam tata letak. Jika Anda menggunakan tata letak relatif, misalnya, 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 ke sisi kanan, dan kolom teks disejajarkan ke 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, bukan lagi fokus yang berpindah dari button1 ke button2, lalu editText1, tetapi fokus akan berpindah dengan tepat sesuai dengan tampilan di layar: dari button1 ke editText1, lalu button2.

Menangani navigasi terarah

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

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

Setiap atribut akan menunjuk tampilan berikutnya agar menerima fokus ketika pengguna melakukan navigasi 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: