Keyboard Type — adalah konfigurasi keyboard virtual di Android yang menentukan kumpulan karakter yang ditampilkan dan tata letak untuk bidang input tertentu. Android mendukung banyak tipe prasetel: text (teks standar), number (numerik), phone (telepon), email (dengan simbol @), textPassword (untuk kata sandi), datetime dan lainnya. Setiap tipe mengoptimalkan antarmuka input untuk tugas tertentu — misalnya, keyboard email menampilkan simbol @ dan titik di layar utama. Menurut data Android Developers (2026), pemilihan Keyboard Type yang tepat mengurangi jumlah ketikan saat input sebesar 20–40% dibandingkan dengan keyboard teks standar.
Poin utama
Keyboard Type ditentukan oleh nilai atribut android:inputType dalam XML atau panggilan programatik setInputType() dalam kode. InputType adalah mask bit, di mana kelas input (kelas) digabungkan dengan flag pengubah. Kelas dasar: TYPE_CLASS_TEXT untuk teks, TYPE_CLASS_NUMBER untuk angka, TYPE_CLASS_PHONE untuk telepon, TYPE_CLASS_DATETIME untuk tanggal dan waktu.
Setiap Keyboard Type mempengaruhi tiga aspek: tata letak keyboard virtual (karakter mana yang terlihat di layar utama), pemfilteran karakter yang dimasukkan (karakter mana yang diizinkan) dan perilaku koreksi otomatis/pelengkapan otomatis. Misalnya, keyboard number hanya menampilkan angka dan pemisah desimal, dan tidak menampilkan huruf, bahkan jika pengguna mengganti mode. Menurut Android Developers Documentation (2026), menggabungkan kelas dengan flag memungkinkan pembuatan mode yang sangat terspesialisasi: teks multibaris dengan koreksi otomatis, angka floating point, kata sandi dengan kemampuan pelengkapan otomatis.
Penting untuk dipahami bahwa Keyboard Type adalah rekomendasi untuk sistem input (IME). Beberapa keyboard pihak ketiga (Gboard, SwiftKey) mungkin mengabaikan sebagian tipe yang ditentukan jika pengguna mengonfigurasi preferensi sendiri. Namun, sebagian besar keyboard standar Android dan Google Gboard mengikuti secara ketat tipe input yang ditentukan.
// Konfigurasi programatik tipe keyboard
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT — kelas dasar untuk input teks. Mengaktifkan keyboard QWERTY standar dengan huruf, angka, dan simbol. Kelas Text memiliki jumlah pengubah terbanyak yang memperjelas perilaku: TYPE_TEXT_FLAG_CAP_SENTENCES (huruf kapital otomatis di awal kalimat), TYPE_TEXT_FLAG_AUTO_CORRECT (koreksi otomatis), TYPE_TEXT_FLAG_MULTI_LINE (mode multibaris), TYPE_TEXT_FLAG_NO_SUGGESTIONS (menonaktifkan saran).
Pengubah keyboard teks dapat digabungkan, menciptakan konfigurasi yang tepat: misalnya, text|textCapSentences|textAutoCorrect cocok untuk bidang input komentar, di mana huruf kapital otomatis dan koreksi kesalahan ketik diperlukan. Sementara text|textNoSuggestions digunakan untuk memasukkan kode atau istilah khusus, di mana koreksi otomatis dapat merugikan.
Menurut UX Stack Exchange (2025), keyboard teks dengan koreksi otomatis diaktifkan mempercepat input sebesar 15–25% untuk pengguna rata-rata, tetapi untuk istilah teknis (kode, URL, email) disarankan untuk menonaktifkan koreksi otomatis, karena sering mengganti istilah yang benar dengan yang salah.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER mengaktifkan keyboard numerik, yang hanya menampilkan angka, pemisah desimal, dan tanda minus. Tipe ini digunakan untuk bidang input kuantitas, harga, usia, kode, dan data numerik lainnya. Keyboard numerik memakan lebih sedikit ruang di layar daripada keyboard teks dan mencegah masuknya huruf secara tidak sengaja.
Number memiliki tiga pengubah: TYPE_NUMBER_FLAG_DECIMAL menambahkan titik/koma desimal, TYPE_NUMBER_FLAG_SIGNED menambahkan tanda minus untuk angka negatif, TYPE_NUMBER_VARIATION_PASSWORD — untuk kode PIN, di mana angka ditampilkan sebagai simbol tersembunyi. Kombinasi number|numberDecimal|numberSigned menciptakan bidang lengkap untuk memasukkan angka floating point dengan tanda apa pun.
// Input numerik dengan titik desimal
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Periksa angka yang dimasukkan
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE mengaktifkan keyboard telepon, yang menampilkan angka dan simbol yang khas untuk nomor telepon: +, #, *, (, ). Tidak seperti keyboard number, phone juga menampilkan tata letak huruf dalam mode tambahan, karena nomor telepon dapat berisi huruf (misalnya, 1-800-FLOWERS). Kelas phone tidak memiliki flag tambahan, tetapi mendukung TYPE_TEXT_VARIATION_PHONE_ETC untuk memasukkan nomor ekstensi.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS mengaktifkan keyboard email, di mana simbol @ dan titik berada di layar utama, dan ekstensi domain yang sering digunakan (.com, .net, .org) juga tersedia. Gboard juga menampilkan tombol dengan domain populer saat memasukkan setelah @. Keyboard email secara otomatis menonaktifkan koreksi otomatis, karena alamat email dapat berisi kombinasi karakter yang tidak standar.
Menurut Google Material Design Guidelines (2025), untuk bidang telepon disarankan untuk juga menentukan atribut android:digits, yang membatasi kumpulan karakter yang diizinkan. Untuk bidang email, penting juga untuk menentukan autofillHints="email" untuk mendukung pelengkapan otomatis dari manajer kata sandi dan Google Autofill.
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"
<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"
TYPE_TEXT_VARIATION_PASSWORD dan TYPE_NUMBER_VARIATION_PASSWORD — adalah mode input untuk data rahasia. Saat mengatur textPassword, karakter yang dimasukkan ditampilkan sebagai titik atau bintang (tergantung pada versi Android dan keyboard). Keyboard dalam mode ini menonaktifkan koreksi otomatis dan penyimpanan kata yang dimasukkan ke dalam kamus pengguna, mencegah kebocoran kata sandi melalui fungsi input prediktif.
Password keyboard juga menonaktifkan kemampuan untuk mengambil screenshot dari konten bidang (flag FLAG_SECURE), meskipun perilaku ini tergantung pada implementasi keyboard tertentu. Mulai Android 8.0 (API 26), keyboard password mendukung pelengkapan otomatis melalui manajer kata sandi, jika atribut importantForAutofill="yes" diatur.
Menurut Android Security Recommendations (2025), untuk bidang kata sandi juga disarankan: mengatur maxLength untuk mencegah kata sandi yang sangat panjang (yang dapat menjadi serangan pada database), menggunakan inputType="textPassword" bersama dengan TextInputLayout dan endIconMode="password_toggle", sehingga pengguna dapat memeriksa kata sandi yang dimasukkan sebelum mengirim formulir.
<!-- Password field with show/hide icon -->
@+id/tilPasswordField
app:endIconMode="password_toggle">
@+id/etPasswordField
android:inputType="textPassword"
android:maxLength="64"
android:importantForAutofill="yes" />
</com.google.android.material.textfield.TextInputLayout>
Konfigurasi programatik Keyboard Type memungkinkan perubahan dinamis mode keyboard tergantung pada konteks atau input pengguna. Misalnya, saat mengganti tipe bidang (teks/angka/tanggal) atau saat mengubah locale. Metode setInputType() menerima mask bit InputType dan segera memperbarui keyboard jika bidang dalam fokus.
// Beralih antara input teks dan numerik
fun switchInputType(field: EditText, isNumeric: Boolean) {
field.inputType = if (isNumeric) {
InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
} else {
InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
}
field.setSelection(field.text.length)
}
// Periksa apakah bidang numerik
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Periksa apakah koreksi otomatis diaktifkan
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Pertanyaan yang sering diajukan
Jika inputType tidak ditentukan, EditText secara default menggunakan TYPE_CLASS_TEXT dengan flag TYPE_TEXT_FLAG_MULTI_LINE. Ini berarti keyboard QWERTY standar dan input multibaris. Untuk sebagian besar bidang, disarankan untuk secara eksplisit menentukan inputType untuk memastikan perilaku keyboard yang benar dan pemfilteran karakter.
Gunakan atribut android:imeOptions="actionDone" pada EditText. Ini akan mengganti tombol Enter dengan tombol Done. Opsi lainnya: actionSearch (kaca pembesar), actionNext (panah kanan), actionSend (kirim). Implementasikan penanganan penekanan melalui OnEditorActionListener dalam kode.
Tidak dapat menonaktifkan getaran untuk bidang tertentu — ini adalah pengaturan sistem yang dikelola oleh pengguna di pengaturan keyboard. Namun, Anda dapat sepenuhnya mencegah keyboard muncul dengan mengatur atribut android:focusable="false" pada EditText atau membatalkan tampilan melalui dispatchTouchEvent.
Atur android:inputType="none" atau panggil secara programatik editText.setKeyListener(null). Bidang akan menampilkan teks, tetapi keyboard tidak akan muncul saat fokus. Pengguna dapat memilih dan menyalin teks, tetapi tidak dapat mengubahnya. Alternatif — gunakan TextView dengan textIsSelectable="true".
Setelah memanggil setInputType(), Anda perlu menampilkan kembali keyboard, karena sistem mungkin tidak memperbarui IME secara otomatis. Panggil InputMethodManager.restartInput(view) untuk pembaruan paksa. Jika bidang tidak dalam fokus, panggil dulu requestFocus(), lalu restartInput.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga