InputType — ano ito, mga attribute ng input at ang kanilang configuration sa Android

May-akda: IT Sectr Nai-publish: 2026-07-07 Oras ng pagbabasa: 9 min

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 — bit mask na tumutukoy sa klase ng input at mga modifier para sa EditText.
  • Mga klase ng input — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME.
  • Mga modifier — mga flag na nagbibigay-tiyak sa gawi: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES.
  • Pagsasama — ang klase at mga modifier ay pinagsama sa pamamagitan ng bitwise OR para sa tumpak na configuration.
  • Epekto — ang tamang InputType ay nagpapabilis ng input, nagbabawas ng mga error, at nagpapabuti ng UX ng form.

Ano ang InputType sa Android

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.

kotlin
// 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

Mga klase ng InputType: TEXT, NUMBER, PHONE, DATETIME

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).

KlaseConstantKeyboardGamit
TEXTTYPE_CLASS_TEXT (1)QWERTYTeksto, komento, paglalarawan
NUMBERTYPE_CLASS_NUMBER (2)NumerikoDami, presyo, edad
PHONETYPE_CLASS_PHONE (3)TeleponoNumero ng telepono
DATETIMETYPE_CLASS_DATETIME (4)Petsa/orasPetsa, 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

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.

Mga flag para sa TEXT

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — lahat ng titik ay malalaki.
  • TYPE_TEXT_FLAG_CAP_WORDS — bawat salita ay nagsisimula sa malaking titik.
  • TYPE_TEXT_FLAG_CAP_SENTENCES — malaking titik sa simula ng pangungusap (default).
  • TYPE_TEXT_FLAG_AUTO_CORRECT — awtomatikong pagwawasto ng mga typo.
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — awtomatikong pag-kumpleto (para sa AutoCompleteTextView).
  • TYPE_TEXT_FLAG_MULTI_LINE — multi-line na input.
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — pag-disable ng mga suhestiyon.

Mga flag para sa NUMBER

  • TYPE_NUMBER_FLAG_SIGNED — pinapayagan ang mga negatibong numero (minus sign).
  • TYPE_NUMBER_FLAG_DECIMAL — pinapayagan ang decimal point.

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.

Mga kombinasyon ng InputType: halimbawa para sa iba't ibang senaryo

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.

SenaryoInputTypeKeyboard
PangalantextCapWordsQWERTY, bawat salita ay malaking titik
EmailtextEmailAddressQWERTY na may @ at .
PasswordtextPasswordQWERTY, nakatagong input
TeleponophoneMga numero na may +, #, *
PresyonumberDecimalMga numero na may kuwit
DaminumberMga numero lamang
KomentotextCapSentences|textMultiLineQWERTY, multi-line
Paghahanaptext|textNoSuggestionsQWERTY na walang suhestiyon
kotlin
// 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

Programatikong paggawa gamit ang InputType

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.

Pagpapalit ng mga mode

kotlin
// 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)
}

Pagkuha ng klase at variation

kotlin
// 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
}

Pinakamahusay na kasanayan sa pagpili ng InputType

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.

  • Kaliwanagan — palaging tahasang itakda ang InputType, huwag umasa sa default na halaga (textMultiLine).
  • Specificidad — gamitin ang pinaka-specific na uri: textEmailAddress, hindi text para sa email.
  • Seguridad — para sa mga password, PIN at data ng card gamitin ang mga variation ng PASSWORD.
  • Auto-complete — pagsamahin ang InputType sa autofillHints para suportahan ang mga password manager.
  • Pagsubok — suriin ang gawi sa iba't ibang keyboard (Gboard, SwiftKey, Samsung Keyboard).

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

Ano ang pagkakaiba ng InputType at Keyboard Type?

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.

Paano i-reset ang InputType sa default na halaga?

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.

Maaari bang gumawa ng custom na InputType?

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().

Paano nakakaapekto ang InputType sa IME (keyboard)?

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.

Paano suriin ang InputType sa runtime?

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

  • InputType — bit mask na binubuo ng klase ng input (TEXT, NUMBER, PHONE, DATETIME) at mga modifier.
  • Klase ng input ay tumutukoy sa pangunahing uri ng data at uri ng keyboard na ipinapakita.
  • Mga modifier ay nagbibigay-tiyak sa gawi: multi-line, auto-correct, malalaking titik, nakatagong input.
  • Pagsasama sa pamamagitan ng bitwise OR ay nagbibigay-daan sa paglikha ng tumpak na configuration para sa iba't ibang senaryo.
  • Mga variation ng PASSWORD ay nagdi-disable ng auto-correct, nagtatago ng mga character at pumipigil sa pag-record sa diksyunaryo.
  • Programatikong pagtatakda sa pamamagitan ng setInputType() ay nangangailangan ng restart ng IME para ma-update ang keyboard.
  • Pinakamahusay na kasanayan — tahasang itakda ang InputType, gumamit ng mga specific na uri at subukan sa iba't ibang keyboard.

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.

Pag-usapan ang proyekto

Basahin din