Mendukung navigasi keyboard

Selain metode input virtual—seperti di layar keyboard—Android mendukung keyboard fisik yang terpasang ke perangkat. J 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 sangat populer, dan banyak pengguna yang suka memasang aksesori {i>keyboard<i} ke mereka.

Karena semakin banyak perangkat yang didukung Android menawarkan pengalaman semacam ini, penting untuk Anda akan mengoptimalkan aplikasi untuk mendukung interaksi melalui keyboard. Ini dokumen ini menjelaskan bagaimana Anda dapat meningkatkan navigasi dengan keyboard.

Menguji aplikasi

Pengguna mungkin sudah dapat menavigasi aplikasi Anda menggunakan {i>keyboard<i}, karena sistem Android memungkinkan sebagian besar perilaku yang diperlukan secara default.

Semua widget interaktif yang disediakan oleh framework Android—seperti Button dan EditText—adalah dapat difokuskan. Ini berarti pengguna dapat menavigasi dengan perangkat kontrol seperti D-pad atau keyboard khusus, dan setiap widget 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 ke Bluetooth {i>keyboard<i} atau {i>keyboard<i} USB.

    Anda juga dapat menggunakan emulator Android:

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

    Cari kejadian ketika fokus bergerak secara tidak terduga. cara.

  3. Memulai lagi dari awal aplikasi dan menavigasi melalui UI menggunakan kontrol arah seperti tombol panah pada {i>keyboard<i}. Dari setiap elemen yang dapat difokuskan di UI, tekan Up, Down, Kiri, dan Kanan.

    Cari kejadian ketika fokus bergerak secara tidak terduga. cara.

Jika Anda menemukan situasi ketika menavigasi dengan tombol Tab atau kontrol arah tidak melakukan apa yang Anda harapkan, tentukan tempat fokus harus ada di tata letak Anda, seperti yang dibahas di bagian berikut.

Menangani navigasi tab

Saat pengguna membuka aplikasi Anda menggunakan tombol Tab keyboard, sistem meneruskan fokus input di antara elemen berdasarkan urutannya muncul dalam tata letak. Jika Anda menggunakan tata letak relatif, misalnya, dan urutan berbeda di layar dengan urutan di dalam {i>file<i}, maka Anda mungkin perlu menentukan urutan fokus secara manual.

Misalnya, dalam tata letak berikut, dua tombol disejajarkan di sebelah kanan dan bidang teks sejajar dengan bagian kiri tombol kedua. Untuk lulus fokus dari tombol pertama ke {i>field<i} teks dan kemudian ke tombol kedua, harus secara eksplisit mendefinisikan urutan fokus untuk setiap elemen elemen dengan 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 fokus berpindah dari button1 ke button2 dan editText1, lapisan ini akan bergerak dengan tepat sesuai dengan tampilan di layar: dari button1 hingga editText1, lalu button2.

Menangani navigasi terarah

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

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

Setiap atribut menetapkan tampilan berikutnya yang akan menerima fokus saat pengguna membuka ke arah tersebut, seperti yang ditetapkan oleh ID tampilan. Hal ini ditunjukkan di 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: