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