EditText: ano ito, mga attribute at paggawa gamit ang input field sa Android

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

EditText — ay isang pangunahing bahagi ng Android na idinisenyo para sa pagpasok at pag-edit ng teksto sa user interface. Nagmamana ito mula sa TextView at nagbibigay ng kakayahang magpasok ng mga character mula sa virtual o pisikal na keyboard. Sinusuportahan ng EditText ang maraming mode: single-line at multi-line na teksto, password, numero, email address at numero ng telepono. Ayon sa Android Developers (2026), ang EditText ay ginagamit sa higit sa 90% ng mga Android application para sa paggawa ng mga form, search field, chat at data input screen.

Mga pangunahing punto

  • EditText — pangunahing bahagi ng pag-input ng teksto sa Android, tagapagmana ng TextView.
  • Mga mode ng input — sumusuporta sa teksto, numero, password, email, telepono at multi-line na input.
  • Mga XML attribute — configuration sa pamamagitan ng inputType, maxLines, hint, textColorHint at iba pang parameter.
  • Mga listener — TextWatcher para sa pagsubaybay ng mga pagbabago at OnEditorActionListener para sa paghawak ng mga aksyon.
  • Material Design — pinalalawak ng TextInputLayout ang EditText na may lumulutang na label at mga mensahe ng error.

Ano ang EditText sa Android

EditText — ay isang klase mula sa package na android.widget na nagpapatupad ng interactive na text field para sa pag-input ng data ng user. Sa hierarchy ng pamana ng Android EditText extends TextView, kaya minamana nito ang lahat ng katangian ng isang text label, kabilang ang pamamahala ng font, kulay at pagkakahanay. Ang pangunahing pagkakaiba sa pagitan ng EditText at TextView ay ang kakayahang mag-edit ng nilalaman — ang user ay maaaring magpasok, magtanggal at magbago ng teksto nang direkta sa interface.

Ang bawat EditText ay nakaugnay sa isang instance ng Editable na nag-iimbak ng inilagay na teksto at sumusuporta sa mga operasyon ng pagpasok, pagtanggal at pagpapalit ng character. Kapag naglalagay ng teksto, awtomatikong pinamamahalaan ng EditText ang posisyon ng cursor, pagpili ng teksto at kasaysayan ng pagbabago para sa undo/redo. Ayon sa Android Developers Guide (2026), sinusuportahan din ng EditText ang auto-completion sa pamamagitan ng klase na AutoCompleteTextView na nagmamana mula sa EditText.

Ang arkitektura ng EditText ay binuo sa paghihiwalay ng modelo (Editable), view (TextView) at controller (InputConnection). Kapag nakatanggap ng focus, gumagawa ang EditText ng InputConnection kung saan ang input system ay nagpapadala ng mga character, key press at editing command. Tinitiyak ng mekanismong ito ang compatibility sa anumang paraan ng input — mula sa virtual keyboard hanggang sa pisikal na Bluetooth keyboard at voice input.

kotlin
val editText = EditText(context).apply {
    hint = "Maglagay ng teksto"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

Mga pangunahing attribute ng EditText

EditText ay nagbibigay ng dose-dosenang attribute para sa tumpak na pagsasaayos ng pag-uugali at hitsura. Maaari itong itakda pareho sa XML layout at programmatically sa pamamagitan ng Kotlin o Java. Ang mga attribute ay nahahati sa mga kategorya: pamamahala ng teksto, mga limitasyon, visual na hitsura at pakikipag-ugnayan sa keyboard.

AttributePaglalarawanHalimbawa ng halaga
android:hintTeksto ng pahiwatig na ipinapakita sa walang laman na field„Maglagay ng email"
android:inputTypeMode ng input (teksto, numero, password atbp.)textEmailAddress
android:maxLinesMaximum na bilang ng mga linya3
android:maxLengthMaximum na haba ng teksto sa mga character100
android:textColorHintKulay ng teksto ng pahiwatig#999999

Ang attribute na android:hint ay isa sa pinakamahalaga — ipinapaalam nito sa user kung anong data ang inaasahan sa field. Kapag naglalagay ng teksto, awtomatikong nagtatago ang hint. Ang hint ay hindi nakikilahok sa pagpapadala ng form at hindi nai-save bilang halaga ng field. Inirerekomenda ng Material Design ang paggamit ng TextInputLayout na may lumulutang na label sa halip na ordinaryong hint para sa mas modernong hitsura.

  • android:selectAllOnFocus — pinipili ang lahat ng teksto kapag nakatanggap ng focus (kapaki-pakinabang para sa mga search field).
  • android:maxLength — nililimitahan ang bilang ng inilagay na character, pinuputol ang sobra.
  • android:lines — nagtatakda ng fixed na taas ng field sa mga linya (hindi tulad ng minLines).
  • android:gravity — pagkakahanay ng teksto sa loob ng field: left, center, top atbp.
xml
                <!-- EditText in XML layout -->
@+id/etEmail
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:importantForAutofill="yes" />

Mga mode ng input at inputType

Ang attribute na inputType ay tumutukoy kung anong uri ng keyboard ang ipapakita sa user at kung anong mga character ang pinapayagan para sa input. Ito ay isang bit mask kung saan ang input class (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) ay pinagsama sa mga modifier.

Ang bawat mode ng input ay hindi lamang nagbabago ng layout ng keyboard, kundi nakakaapekto rin sa pagproseso ng teksto: sa numeric mode ay pinapayagan lamang ang mga numero at decimal separator, sa email mode ay available ang @ symbol at domain extension, at sa phone mode ay ipinapakita ang mga numero at simbolo na +, #, *. Ang tamang pagpili ng inputType ay may kritikal na epekto sa karanasan ng user — ang hindi angkop na keyboard ay pumipilit sa user na magpalipat-lipat ng mode, na nagpapataas ng oras ng pagpuno ng form ng 30–50%.

Ayon sa Material Design Guidelines (2025), inirerekomenda na gamitin ang pinaka-specific na inputType para sa bawat field: textPassword para sa mga password, numberDecimal para sa mga presyo, phone para sa mga numero ng telepono, textMultiLine para sa multi-line na input. Pinapabilis nito ang pagpuno ng mga form at binabawasan ang bilang ng mga error sa input.

kotlin
// Programmatic na pag-setup ng inputType
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

Mga listener ng EditText: TextWatcher at OnEditorActionListener

TextWatcher — ay isang interface para sa pagsubaybay sa mga pagbabago ng teksto sa EditText sa real-time. Naglalaman ito ng tatlong pamamaraan: beforeTextChanged ay tinatawag bago ang pagbabago, onTextChanged — habang nagbabago, afterTextChanged — pagkatapos makumpleto ang pagbabago ng teksto. Ang TextWatcher ay ginagamit para sa validation ng input, pagbilang ng character, paghahanap at auto-completion.

OnEditorActionListener ay humahawak ng mga aksyon ng user sa keyboard: pagpindot ng Done button (IME_ACTION_DONE), paghahanap (IME_ACTION_SEARCH), pagpapadala (IME_ACTION_SEND), paglipat sa susunod na field (IME_ACTION_NEXT) at iba pa. Ang listener na ito ay lalong kapaki-pakinabang para sa pag-oorganisa ng navigation sa form — sa pagpindot ng Next, awtomatikong lumilipat ang focus sa susunod na field, at sa pagpindot ng Done, ang keyboard ay nagtatago at ang pagpapadala ay isinasagawa.

Ayon sa Android Developers Blog (2025), ang tamang paggamit ng OnEditorActionListener na may attribute na android:imeOptions ay nagbibigay-daan sa paglikha ng mga intuitive na form nang walang karagdagang pindutan ng pagpapadala — pinupuno ng user ang mga field at pinipindot ang Done sa keyboard, na nagti-trigger ng pag-save o paghahanap.

kotlin
// TextWatcher para sa validation ng email
editText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        val isValid = Patterns.EMAIL_ADDRESS.matcher(s).matches()
        editText.error = if (isValid) null else "Invalid email format"
    }
})

// OnEditorActionListener para sa pagpapadala ng form
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

Mga halimbawa ng code gamit ang EditText

Tingnan natin ang isang kumpletong halimbawa ng paggawa ng login screen gamit ang EditText para sa pagpasok ng email at password. Sa halimbawang ito, ipinapakita ang configuration ng inputType, validation sa pamamagitan ng TextWatcher at paghawak ng pagpindot ng login button.

XML layout ng login screen

xml
@+id/etLoginEmail
android:layout_width="match_parent"
android:hint="Email"
android:inputType="textEmailAddress"
android:maxLines="1" />

@+id/etLoginPassword
android:layout_width="match_parent"
android:hint="Password"
android:inputType="textPassword"
android:maxLines="1" />

Programmatic na configuration ng EditText

kotlin
class LoginFragment : Fragment() {
    private lateinit var etEmail: EditText
    private lateinit var etPassword: EditText

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        etEmail = view.findViewById(R.id.etLoginEmail)
        etPassword = view.findViewById(R.id.etLoginPassword)

        etEmail.addTextChangedListener(emailWatcher)
        etPassword.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                performLogin()
                true
            } else false
        }
    }
}

Pag-istilo ng EditText

EditText ay sumusuporta sa pag-customize sa pamamagitan ng XML attribute, tema at estilo. Maaaring baguhin ang kulay ng teksto, kulay ng pahiwatig, kulay ng salungguhit (backgroundTint), estilo ng font, laki ng teksto at marami pa. Ang Material Components ay nagbibigay ng tema na MaterialComponents. EditText na may custom na attribute, kabilang ang boxStrokeColor, boxBackgroundColor at endIconMode.

Para sa pagbabago ng kulay ng salungguhit ng EditText ginagamit ang attribute na android:backgroundTint, na nagtatakda ng kulay para sa default na estado at focus state. Sa Material Design, ang kulay ng salungguhit ay pinamamahalaan sa pamamagitan ng colorPrimary ng tema. Para sa buong pag-customize, maaaring gumawa ng custom na drawable para sa background sa folder na res/drawable.

EstiloAttributeResulta
Kulay ng tekstoandroid:textColorNagbabago ng kulay ng inilagay na teksto
Kulay ng hintandroid:textColorHintNagbabago ng kulay ng teksto ng pahiwatig
Salungguhitandroid:backgroundTintNagbabago ng kulay ng linya sa ilalim ng field
Laki ng fontandroid:textSizeNagtatakda ng laki ng teksto sa sp
Fontandroid:fontFamilyKumokonekta ng custom na font

Para sa paglikha ng pare-parehong estilo ng lahat ng EditText sa application, inirerekomenda na tukuyin ang isang global na estilo sa tema. Ang Material Design ay nag-aalok ng estilo na Widget.MaterialComponents.TextInputLayout.OutlinedBox na awtomatikong inilalapat sa lahat ng input field na gumagamit ng TextInputLayout. Tinitiyak nito ang pare-parehong hitsura nang hindi inuulit ang mga attribute sa bawat layout.

Mga madalas itanong

Ano ang pagkakaiba ng EditText at TextView?

EditText ay nagmamana mula sa TextView at nagdaragdag ng kakayahang mag-edit ng teksto. Ang TextView ay nagpapakita lamang ng teksto, habang ang EditText ay nagpapahintulot sa user na magpasok, magtanggal at magbago ng nilalaman. Sinusuportahan din ng EditText ang inputType, TextWatcher, pamamahala ng cursor at iba pang function na nauugnay sa pag-input ng data.

Paano ipagbawal ang pag-input ng mga tiyak na character sa EditText?

Gamitin ang InputFilter — isang interface para sa pag-filter ng mga inilagay na character. Sinusuportahan ng EditText ang pagtatakda ng array ng mga filter sa pamamagitan ng setFilters() method. Halimbawa, nililimitahan ng InputFilter.LengthFilter ang haba ng teksto, at ang custom na InputFilter ay maaaring magbawal ng mga tiyak na character, regular expression o Unicode range.

Paano makakuha ng teksto mula sa EditText sa code?

Tawagan ang method na editText.text.toString() sa Kotlin o editText.getText().toString() sa Java. Ang property na text ay nagbabalik ng Editable na kino-convert sa String sa pamamagitan ng toString(). Mahalagang suriin ang teksto para sa null at kawalan ng laman bago gamitin, lalo na sa mga form na may mga mandatoryong field.

Paano gawing multi-line ang EditText?

Itakda ang attribute na android:inputType="textMultiLine" o programmatically idagdag ang flag na InputType.TYPE_TEXT_FLAG_MULTI_LINE. Sa multi-line mode, pinapayagan ng EditText ang line break gamit ang Enter at awtomatikong tumataas ang taas. Para sa paglilimita ng taas, gamitin ang android:maxLines o android:minLines.

Paano i-disable ang EditText para sa pag-edit?

Itakda ang attribute na android:enabled="false" o tawagan ang editText.isEnabled = false sa code. Ang naka-disable na EditText ay hindi tumutugon sa mga pagpindot, hindi nakakatanggap ng focus at ipinapakita sa kulay-abo (disabled state). Ang alternatibo ay ang paggamit ng android:focusable="false", na nagdi-disable ng input ngunit pinapanatili ang normal na hitsura.

Buod

  • EditText — pangunahing bahagi ng pag-input ng teksto sa Android, tagapagmana ng TextView na may suporta sa pag-edit.
  • inputType tumutukoy ng keyboard mode at pinapayagan na character: teksto, numero, email, telepono, password.
  • TextWatcher nagbibigay-daan sa real-time na pagsubaybay ng mga pagbabago sa teksto para sa validation at auto-completion.
  • OnEditorActionListener humahawak ng mga aksyon sa keyboard: Done, Search, Next, Send.
  • InputFilter nililimitahan ang inilagay na character at haba ng teksto sa pamamagitan ng custom na filter.
  • Mga attribute hint, maxLines, maxLength, textColorHint nagko-configure ng pag-uugali at hitsura ng field.
  • Material Design pag-istilo sa pamamagitan ng TextInputLayout ay nagbibigay ng modernong hitsura na may lumulutang na label at error.

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