InputType — ay isang attribute ng Android na tumutukoy sa katangian ng data na ipinasok at gawi ng keyboard para sa mga text field. Ang halaga ng InputType ay kumakatawan sa isang bit mask na pinagsasama ang klase ng input (teksto, numero, telepono, petsa) at mga modifier (multi-line, auto-correct, malalaking titik, nakatagong input). Nakakaapekto ang InputType sa uri ng keyboard na ipinapakita, pag-filter ng mga character na ipinasok, at paggana ng auto-complete. Ayon sa Android Developers (2026), ang InputType ay isa sa pinakamahalagang attribute para matiyak ang tamang pag-input ng data at dapat na tahasang itakda para sa bawat editable text field.
Mga pangunahing punto
InputType — ay isang integer constant (Int) na nagko-code ng mode ng input para sa isang text field. Sa Android, ito ay tinukoy sa klase ng android.text.InputType. Ang halaga ng InputType ay binubuo ng dalawang bahagi: ang klase ng input (bits 0–4) at mga modifier (bits 5–31). Tinutukoy ng klase ng input ang pangunahing uri ng data — teksto, numero, telepono, petsa. Ang mga modifier ay nagbibigay-tiyak sa gawi sa loob ng napiling klase — halimbawa, para sa klase ng teksto, maaaring i-activate ang auto-correct, malalaking titik, o multi-line na input.
Ang mekanismo ng InputType ay gumagana sa tatlong antas: sa antas ng framework ng Android, tinutukoy nito kung aling InputConnection ang gagawin (koneksyon sa pagitan ng EditText at IME); sa antas ng IME (keyboard) ito ay nagpapahiwatig kung aling mga character ang ipapakita at kung paano iproseso ang input; sa antas ng application, sinasala nito ang mga character sa pamamagitan ng InputFilter na nakapaloob sa EditText. Ayon sa Android Source Code (AOSP, 2026), ang bit mask ay pinoproseso sa paraang TextView.getInputType(), na nagbabalik ng kasalukuyang halaga, at setInputType(), na muling nagko-configure ng mga internal na filter at koneksyon sa IME.
Isang mahalagang katangian ng InputType — hindi ito mababasa mula sa ibang proseso para sa mga kadahilanang panseguridad. Pinipigilan nito ang pagnanakaw ng data sa pamamagitan ng pag-access sa uri ng input (halimbawa, pagtukoy kung ang field ay password). Kapag sinubukang basahin ang InputType mula sa ibang application, ang TYPE_CLASS_TEXT ay ibinabalik bilang default.
// Mga pangunahing constant ng InputType
InputType.TYPE_CLASS_TEXT // 0x0001 = 1
InputType.TYPE_CLASS_NUMBER // 0x0002 = 2
InputType.TYPE_CLASS_PHONE // 0x0003 = 3
InputType.TYPE_CLASS_DATETIME // 0x0004 = 4
// Mask para sa pagkuha ng klase
InputType.TYPE_MASK_CLASS // 0x0000000F
Sa Android, apat na pangunahing InputType na klase ang tinukoy. Ang bawat klase ay tumutugma sa isang partikular na kategorya ng data at nag-a-activate ng kaukulang uri ng keyboard. Ang klase ay ipinahiwatig sa bits 0–4 ng bit mask at maaaring makuha sa pamamagitan ng mask na TYPE_MASK_CLASS (0x0F).
| Klase | Constant | Keyboard | Gamit |
|---|---|---|---|
| TEXT | TYPE_CLASS_TEXT (1) | QWERTY | Teksto, komento, paglalarawan |
| NUMBER | TYPE_CLASS_NUMBER (2) | Numeriko | Dami, presyo, edad |
| PHONE | TYPE_CLASS_PHONE (3) | Telepono | Numero ng telepono |
| DATETIME | TYPE_CLASS_DATETIME (4) | Petsa/oras | Petsa, oras |
Ang TYPE_CLASS_DATETIME ay bihirang ginagamit nang direkta — karaniwang para sa pag-input ng petsa ay ginagamit ang DatePicker o DatePickerDialog, hindi isang text field. Gayunpaman, sa ilang mga senaryo (mabilis na manu-manong pag-input ng petsa) ang klase na ito ay maaaring maging kapaki-pakinabang. Wala itong espesyalisadong keyboard at karaniwang nagpapakita ng numerikong keyboard.
Ang bawat klase ng input ay maaaring pagsamahin sa mga variation — mga subtype na ipinahiwatig sa bits 5–7. Halimbawa, ang TYPE_TEXT_VARIATION_PASSWORD (bit 5) ay nagdaragdag ng nakatagong input sa klase ng TEXT. Bits ng variation: 0x000000E0 (mask TYPE_MASK_VARIATION).
Mga flag-modifier ng InputType (bits 8–31) ay nagdaragdag ng mga karagdagang kakayahan sa pangunahing klase. Hindi nila binabago ang uri ng keyboard, ngunit binabago ang gawi ng input. Ang mga flag ay tiyak sa bawat klase — ang mga flag para sa TEXT ay hindi gumagana sa NUMBER at kabaliktaran. Nasa ibaba ang mga pangunahing modifier para sa bawat klase.
Ayon sa Android Developers Documentation (2026), ang mga flag para sa iba't ibang klase ay hindi nag-o-overlap — ang pagtatangkang gumamit ng TEXT flag na may NUMBER ay hindi papansinin. Para suriin ang nakatakdang flag, ginagamit ang bitwise AND: (inputType and FLAG) != 0.
Ang tamang kombinasyon ng InputType sa mga klase at flag ay susi sa paglikha ng mga form na komportable. Tingnan natin ang mga karaniwang senaryo at kaukulang configuration ng InputType. Ang bawat senaryo ay nag-o-optimize ng input para sa isang partikular na uri ng data, ginagawang intuitive ang form at pinapabilis ang pagpuno.
| Senaryo | InputType | Keyboard |
|---|---|---|
| Pangalan | textCapWords | QWERTY, bawat salita ay malaking titik |
| textEmailAddress | QWERTY na may @ at . | |
| Password | textPassword | QWERTY, nakatagong input |
| Telepono | phone | Mga numero na may +, #, * |
| Presyo | numberDecimal | Mga numero na may kuwit |
| Dami | number | Mga numero lamang |
| Komento | textCapSentences|textMultiLine | QWERTY, multi-line |
| Paghahanap | text|textNoSuggestions | QWERTY na walang suhestiyon |
// Kombinasyon para sa field ng presyo
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Kombinasyon para sa field ng komento
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_MULTI_LINE
Ang pagtatakda ng InputType nang programatiko sa pamamagitan ng setInputType() ay nag-o-override sa nakaraang halaga. Kung kailangan lang baguhin ang bahagi ng mask (halimbawa, magdagdag ng flag), kailangang i-save ang kasalukuyang halaga, baguhin ito, at ilapat muli. Ang bawat pagtawag ng setInputType() ay muling nagko-configure ng mga internal na filter ng EditText.
Ang paraang setRawInputType() ay naiiba sa setInputType dahil hindi ito nagdudulot ng reconfiguration ng mga filter at suhestiyon. Ito ay ginagamit para sa pansamantalang pagbabago ng InputType nang walang buong pag-reload ng estado ng EditText. Pagkatapos tumawag ng setInputType(), inirerekomenda na i-restart ang IME upang ma-update ang keyboard.
// Pagpalit sa pagitan ng password at nakikitang teksto
fun togglePasswordVisibility(editText: EditText) {
val currentType = editText.inputType
val isPassword = (currentType and
InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
editText.inputType = if (isPassword) {
InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
} else {
InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_VARIATION_PASSWORD
}
// Panatilihin ang posisyon ng cursor
val cursorPos = editText.selectionStart
editText.setSelection(cursorPos)
}
// Kunin ang klase ng input
fun getInputClass(inputType: Int): Int {
return inputType and InputType.TYPE_MASK_CLASS
}
// Kunin ang variation ng input
fun getInputVariation(inputType: Int): Int {
return inputType and InputType.TYPE_MASK_VARIATION
}
// Suriin kung field ng password
fun isPasswordField(editText: EditText): Boolean {
return (editText.inputType and
InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}
Ang tamang pagpili ng InputType ay hindi lamang UX, kundi pati na rin seguridad at kawastuhan ng data. Ang mga pangunahing rekomendasyon ay kinabibilangan ng: palaging magtakda ng tahasang InputType para sa bawat EditText; gamitin ang pinaka-specific na klase ng input; huwag pagsamahin ang mga flag mula sa iba't ibang klase; para sa mga field na may sensitibong data gamitin ang mga variation ng PASSWORD; para sa mga field ng paghahanap gamitin ang imeOptions=”actionSearch”.
Ang InputType ay nakakaapekto rin sa paggana ng mga serbisyo ng accessibility. Ang mga field na may uri ng textPassword ay nakakakuha ng karagdagang proteksyon mula sa mga screen reader — hindi nila binabasa nang malakas ang mga character na ipinasok. Para sa mga field na may textEmailAddress, ang Screen Reader ay nagpapaalam sa user na ang field ay para sa email at nag-aalok ng mga angkop na suhestiyon.
Ayon sa Material Design Guidelines (2025), ang InputType ay dapat tumugma sa uri ng data na ipinapasok ng user. Ang maling InputType ay hindi lamang nagpapabagal ng input, ngunit maaari ring humantong sa mga error: halimbawa, kung para sa pag-input ng numero ng telepono ay iniwang textMultiLine, ang keyboard ay hindi magpapakita ng numerikong bloke, at ang user ay mapipilitang manu-manong baguhin ang layout sa bawat pagkakataon.
Mga madalas itanong
InputType — ay isang attribute ng EditText na tumutukoy sa uri ng data na ipinasok sa pamamagitan ng bit mask. Keyboard Type — ay ang hindi opisyal na pangalan para sa visual na uri ng keyboard na na-activate ng InputType. Ang InputType ay nakakaapekto rin sa pag-filter ng character, auto-correct at auto-complete, hindi lamang sa layout ng keyboard.
Itakda ang editText.inputType = InputType.TYPE_CLASS_TEXT o gamitin ang constant na InputType.TYPE_NULL (0x00000000) para sa kumpletong reset. Gamit ang TYPE_NULL, ang field ay hindi magpapakita ng keyboard kapag naka-focus. Para bumalik sa standard na text input, itakda ang TYPE_CLASS_TEXT na walang flag.
Hindi maaaring gumawa ng bagong InputType na klase dahil ito ay bahagi ng Android framework. Gayunpaman, maaari mong pagsamahin ang mga umiiral na klase at flag upang makamit ang nais na gawi. Ipatupad ang karagdagang pag-filter ng character sa pamamagitan ng InputFilter, na itinatakda sa EditText sa pamamagitan ng paraang setFilters().
Ang InputType ay ipinapasa sa system ng input sa pamamagitan ng InputConnection. Binabasa ng IME ang klase at variation ng InputType at pinipili ang kaukulang layout ng keyboard. Halimbawa, ang TYPE_CLASS_NUMBER na may TYPE_NUMBER_FLAG_DECIMAL ay nagiging sanhi ng keyboard na magpakita ng numerikong bloke na may tuldok. Karamihan sa mga modernong keyboard ay sumusunod sa mga rekomendasyong ito.
Gamitin ang property na editText.inputType sa Kotlin o ang paraang editText.getInputType() sa Java. Para makuha ang klase, ilapat ang mask: inputType and InputType.TYPE_MASK_CLASS. Para suriin ang isang partikular na flag: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — kung ang resulta ay != 0, ang flag ay nakatakda.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din