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:
- 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:
- Di AVD Manager, klik New Device atau pilih profil yang ada, lalu klik Clone.
- Di jendela yang muncul, pastikan Keyboard dan DPad aktif.
- 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.
- 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: