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 — 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.
val editText = EditText(context).apply {
hint = "Maglagay ng teksto"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
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.
| Attribute | Paglalarawan | Halimbawa ng halaga |
|---|---|---|
| android:hint | Teksto ng pahiwatig na ipinapakita sa walang laman na field | „Maglagay ng email" |
| android:inputType | Mode ng input (teksto, numero, password atbp.) | textEmailAddress |
| android:maxLines | Maximum na bilang ng mga linya | 3 |
| android:maxLength | Maximum na haba ng teksto sa mga character | 100 |
| android:textColorHint | Kulay 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.
<!-- 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" />
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.
// 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
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.
// 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
}
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.
@+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" />
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
}
}
}
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.
| Estilo | Attribute | Resulta |
|---|---|---|
| Kulay ng teksto | android:textColor | Nagbabago ng kulay ng inilagay na teksto |
| Kulay ng hint | android:textColorHint | Nagbabago ng kulay ng teksto ng pahiwatig |
| Salungguhit | android:backgroundTint | Nagbabago ng kulay ng linya sa ilalim ng field |
| Laki ng font | android:textSize | Nagtatakda ng laki ng teksto sa sp |
| Font | android:fontFamily | Kumokonekta 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
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.
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.
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.
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.
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
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