EditText: apa itu, atribut dan bekerja dengan kolom input di Android

Penulis: IT Sectr Diterbitkan: 2026-07-07 Waktu membaca: 9 mnt

EditText — adalah komponen dasar Android yang dirancang untuk memasukkan dan mengedit teks di antarmuka pengguna. Komponen ini mewarisi dari TextView dan menyediakan kemampuan memasukkan karakter dari keyboard virtual atau fisik. EditText mendukung banyak mode: teks satu baris dan multi-baris, kata sandi, angka, alamat email, dan nomor telepon. Menurut Android Developers (2026), EditText digunakan di lebih dari 90% aplikasi Android untuk membuat formulir, kolom pencarian, obrolan, dan layar input data.

Poin utama

  • EditText — komponen dasar input teks di Android, pewaris TextView.
  • Mode input — mendukung teks, angka, kata sandi, email, telepon, dan input multi-baris.
  • Atribut XML — konfigurasi melalui inputType, maxLines, hint, textColorHint dan parameter lainnya.
  • Listener — TextWatcher untuk melacak perubahan dan OnEditorActionListener untuk menangani tindakan.
  • Material Design — TextInputLayout memperluas EditText dengan label mengambang dan pesan kesalahan.

Apa itu EditText di Android

EditText — adalah kelas dari paket android.widget yang mengimplementasikan kolom teks interaktif untuk input data oleh pengguna. Dalam hierarki pewarisan Android EditText extends TextView, sehingga mewarisi semua properti label teks, termasuk manajemen font, warna, dan perataan. Perbedaan utama antara EditText dan TextView terletak pada kemampuan mengedit konten — pengguna dapat memasukkan, menghapus, dan mengubah teks langsung di antarmuka.

Setiap EditText terhubung dengan instance Editable yang menyimpan teks yang dimasukkan dan mendukung operasi penyisipan, penghapusan, dan penggantian karakter. Saat memasukkan teks, EditText secara otomatis mengelola posisi kursor, pemilihan teks, dan riwayat perubahan untuk undo/redo. Menurut Android Developers Guide (2026), EditText juga mendukung pelengkapan otomatis melalui kelas AutoCompleteTextView yang mewarisi dari EditText.

Arsitektur EditText dibangun di atas pemisahan model (Editable), tampilan (TextView), dan pengontrol (InputConnection). Saat menerima fokus, EditText membuat InputConnection yang melaluinya sistem input mengirimkan karakter, penekanan tombol, dan perintah pengeditan. Mekanisme ini memastikan kompatibilitas dengan metode input apa pun — dari keyboard virtual hingga keyboard fisik Bluetooth dan input suara.

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

Atribut dasar EditText

EditText menyediakan puluhan atribut untuk penyesuaian perilaku dan tampilan yang presisi. Atribut-atribut ini dapat diatur baik di tata letak XML maupun secara pemrograman melalui Kotlin atau Java. Atribut dibagi menjadi beberapa kategori: manajemen teks, batasan, tampilan visual, dan interaksi dengan keyboard.

AtributDeskripsiContoh nilai
android:hintTeks petunjuk yang ditampilkan di kolom kosong„Masukkan email"
android:inputTypeMode input (teks, angka, kata sandi, dll.)textEmailAddress
android:maxLinesJumlah baris maksimum3
android:maxLengthPanjang maksimum teks dalam karakter100
android:textColorHintWarna teks petunjuk#999999

Atribut android:hint adalah salah satu yang terpenting — memberi tahu pengguna data apa yang diharapkan di kolom. Saat memasukkan teks, hint secara otomatis menghilang. Hint tidak berpartisipasi dalam pengiriman formulir dan tidak disimpan sebagai nilai kolom. Material Design merekomendasikan penggunaan TextInputLayout dengan label mengambang sebagai pengganti hint biasa untuk tampilan yang lebih modern.

  • android:selectAllOnFocus — memilih semua teks saat menerima fokus (berguna untuk kolom pencarian).
  • android:maxLength — membatasi jumlah karakter yang dimasukkan, memotong kelebihan.
  • android:lines — mengatur tinggi tetap kolom dalam baris (berbeda dengan minLines).
  • android:gravity — perataan teks di dalam kolom: left, center, top, dll.
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" />

Mode input dan inputType

Atribut inputType menentukan jenis keyboard apa yang akan ditampilkan kepada pengguna dan karakter apa yang diizinkan untuk dimasukkan. Ini adalah mask bit di mana kelas input (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) digabungkan dengan pengubah.

Setiap mode input tidak hanya mengubah tata letak keyboard, tetapi juga memengaruhi pemrosesan teks: dalam mode numerik hanya angka dan pemisah desimal yang diizinkan, dalam mode email simbol @ dan ekstensi domain tersedia, dan dalam mode telepon angka serta simbol +, #, * ditampilkan. Pemilihan inputType yang tepat sangat memengaruhi pengalaman pengguna — keyboard yang tidak sesuai memaksa pengguna untuk mengganti mode, yang meningkatkan waktu pengisian formulir sebesar 30–50%.

Menurut Material Design Guidelines (2025), disarankan untuk menggunakan inputType yang paling spesifik untuk setiap kolom: textPassword untuk kata sandi, numberDecimal untuk harga, phone untuk nomor telepon, textMultiLine untuk input multi-baris. Ini mempercepat pengisian formulir dan mengurangi jumlah kesalahan input.

kotlin
// Pengaturan inputType secara pemrograman
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

Listener EditText: TextWatcher dan OnEditorActionListener

TextWatcher — adalah antarmuka untuk melacak perubahan teks di EditText secara waktu nyata. Ini berisi tiga metode: beforeTextChanged dipanggil sebelum perubahan, onTextChanged — selama perubahan, afterTextChanged — setelah perubahan teks selesai. TextWatcher digunakan untuk validasi input, penghitungan karakter, pencarian, dan pelengkapan otomatis.

OnEditorActionListener menangani tindakan pengguna pada keyboard: menekan tombol Done (IME_ACTION_DONE), pencarian (IME_ACTION_SEARCH), pengiriman (IME_ACTION_SEND), berpindah ke kolom berikutnya (IME_ACTION_NEXT) dan lainnya. Listener ini sangat berguna untuk mengatur navigasi formulir — saat menekan Next, fokus secara otomatis berpindah ke kolom berikutnya, dan saat menekan Done, keyboard disembunyikan dan pengiriman dilakukan.

Menurut Android Developers Blog (2025), penggunaan OnEditorActionListener yang benar dengan atribut android:imeOptions memungkinkan pembuatan formulir intuitif tanpa tombol pengiriman tambahan — pengguna mengisi kolom dan menekan Done pada keyboard, yang memicu penyimpanan atau pencarian.

kotlin
// TextWatcher untuk validasi 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 untuk pengiriman formulir
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

Contoh kode dengan EditText

Mari kita lihat contoh lengkap pembuatan layar login menggunakan EditText untuk memasukkan email dan kata sandi. Dalam contoh ini, konfigurasi inputType, validasi melalui TextWatcher, dan penanganan penekanan tombol login ditunjukkan.

Tata letak XML layar login

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

Konfigurasi pemrograman 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
        }
    }
}

Menata EditText

EditText mendukung kustomisasi melalui atribut XML, tema, dan gaya. Warna teks, warna petunjuk, warna garis bawah (backgroundTint), gaya font, ukuran teks, dan banyak lagi dapat diubah. Material Components menyediakan tema MaterialComponents. EditText dengan atribut kustom, termasuk boxStrokeColor, boxBackgroundColor, dan endIconMode.

Untuk mengubah warna garis bawah EditText digunakan atribut android:backgroundTint, yang mengatur warna untuk status default dan status fokus. Di Material Design, warna garis bawah dikelola melalui colorPrimary tema. Untuk kustomisasi penuh, dapat dibuat drawable khusus untuk latar belakang di folder res/drawable.

GayaAtributHasil
Warna teksandroid:textColorMengubah warna teks yang dimasukkan
Warna hintandroid:textColorHintMengubah warna teks petunjuk
Garis bawahandroid:backgroundTintMengubah warna garis di bawah kolom
Ukuran fontandroid:textSizeMengatur ukuran teks dalam sp
Fontandroid:fontFamilyMenghubungkan font kustom

Untuk membuat gaya seragam semua EditText di aplikasi, disarankan untuk mendefinisikan gaya global di tema. Material Design menawarkan gaya Widget.MaterialComponents.TextInputLayout.OutlinedBox yang secara otomatis diterapkan ke semua kolom input yang menggunakan TextInputLayout. Ini memastikan tampilan yang konsisten tanpa menduplikasi atribut di setiap tata letak.

Pertanyaan yang sering diajukan

Apa perbedaan antara EditText dan TextView?

EditText mewarisi dari TextView dan menambahkan kemampuan mengedit teks. TextView hanya menampilkan teks, sedangkan EditText memungkinkan pengguna untuk memasukkan, menghapus, dan mengubah konten. EditText juga mendukung inputType, TextWatcher, manajemen kursor, dan fungsi lain yang terkait dengan input data.

Bagaimana cara melarang input karakter tertentu di EditText?

Gunakan InputFilter — antarmuka untuk memfilter karakter yang dimasukkan. EditText mendukung pengaturan array filter melalui metode setFilters(). Misalnya, InputFilter.LengthFilter membatasi panjang teks, dan InputFilter kustom dapat melarang karakter tertentu, ekspresi reguler, atau rentang Unicode.

Bagaimana cara mendapatkan teks dari EditText di kode?

Panggil metode editText.text.toString() di Kotlin atau editText.getText().toString() di Java. Properti text mengembalikan Editable yang dikonversi menjadi String melalui toString(). Penting untuk memeriksa teks terhadap null dan kekosongan sebelum digunakan, terutama di formulir dengan kolom wajib.

Bagaimana cara membuat EditText multi-baris?

Atur atribut android:inputType="textMultiLine" atau tambahkan secara pemrograman bendera InputType.TYPE_TEXT_FLAG_MULTI_LINE. Dalam mode multi-baris, EditText memungkinkan pemutusan baris dengan Enter dan secara otomatis bertambah tinggi. Untuk membatasi tinggi, gunakan android:maxLines atau android:minLines.

Bagaimana cara menonaktifkan EditText untuk pengeditan?

Atur atribut android:enabled="false" atau panggil editText.isEnabled = false di kode. EditText yang dinonaktifkan tidak merespons sentuhan, tidak menerima fokus, dan ditampilkan dalam warna abu-abu (disabled state). Alternatifnya adalah menggunakan android:focusable="false", yang menonaktifkan input tetapi mempertahankan tampilan normal.

Ringkasan

  • EditText — komponen dasar input teks di Android, pewaris TextView dengan dukungan pengeditan.
  • inputType menentukan mode keyboard dan karakter yang diizinkan: teks, angka, email, telepon, kata sandi.
  • TextWatcher memungkinkan pelacakan perubahan teks secara waktu nyata untuk validasi dan pelengkapan otomatis.
  • OnEditorActionListener menangani tindakan keyboard: Done, Search, Next, Send.
  • InputFilter membatasi karakter yang dimasukkan dan panjang teks melalui filter kustom.
  • Atribut hint, maxLines, maxLength, textColorHint mengonfigurasi perilaku dan tampilan kolom.
  • Material Design penataan melalui TextInputLayout memberikan tampilan modern dengan label mengambang dan kesalahan.

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.

Diskusikan proyek

Baca juga