EditText: คืออะไร คุณลักษณะ และการทำงานกับฟิลด์ป้อนข้อมูลใน Android

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-07 เวลาอ่าน: 9 นาที

EditText เป็นคอมโพเนนต์พื้นฐานของ Android ที่ออกแบบมาสำหรับการป้อนและแก้ไขข้อความในส่วนติดต่อผู้ใช้ โดยสืบทอดจาก TextView และอนุญาตให้ป้อนอักขระผ่านแป้นพิมพ์เสมือนหรือจริง EditText รองรับหลายโหมด: ข้อความบรรทัดเดียวและหลายบรรทัด รหัสผ่าน ตัวเลข ที่อยู่อีเมล และหมายเลขโทรศัพท์ ตามข้อมูลจาก Android Developers (2026) มีการใช้ EditText ในมากกว่า 90% ของแอป Android เพื่อสร้างฟอร์ม ฟิลด์ค้นหา แชท และหน้าจอป้อนข้อมูล

ประเด็นสำคัญ

  • EditText — คอมโพเนนต์ป้อนข้อความพื้นฐานใน Android ซึ่งเป็นคลาสย่อยของ TextView
  • โหมดป้อนข้อมูล — รองรับข้อความ ตัวเลข รหัสผ่าน อีเมล โทรศัพท์ และการป้อนหลายบรรทัด
  • คุณลักษณะ XML — การกำหนดค่าผ่าน inputType, maxLines, hint, textColorHint และพารามิเตอร์อื่น ๆ
  • ตัวฟัง — TextWatcher สำหรับติดตามการเปลี่ยนแปลงและ OnEditorActionListener สำหรับจัดการการดำเนินการ
  • Material Design — TextInputLayout ขยาย EditText ด้วยป้ายกำกับลอยและข้อความแสดงข้อผิดพลาด

EditText ใน Android คืออะไร

EditText เป็นคลาสจากแพ็กเกจ android.widget ที่ implement ฟิลด์ข้อความแบบโต้ตอบสำหรับการป้อนข้อมูลผู้ใช้ ในลำดับชั้นการสืบทอดของ Android EditText ขยาย TextView ดังนั้นจึงสืบทอดคุณสมบัติทั้งหมดของป้ายข้อความ รวมถึงการจัดการแบบอักษร สี และการจัดตำแหน่ง ความแตกต่างหลักระหว่าง EditText และ TextView คือความสามารถในการแก้ไขเนื้อหา — ผู้ใช้สามารถป้อน ลบ และแก้ไขข้อความได้โดยตรงในอินเทอร์เฟซ

แต่ละ EditText เชื่อมโยงกับอินสแตนซ์ Editable ที่เก็บข้อความที่ป้อนและรองรับการดำเนินการแทรก ลบ และแทนที่ เมื่อพิมพ์ EditText จะจัดการตำแหน่งเคอร์เซอร์ การเลือกข้อความ และประวัติการเปลี่ยนแปลงสำหรับเลิกทำ/ทำซ้ำโดยอัตโนมัติ ตาม Android Developers Guide (2026) EditText ยังรองรับการเติมข้อความอัตโนมัติผ่านคลาส AutoCompleteTextView ซึ่งสืบทอดจาก EditText

สถาปัตยกรรมของ EditText สร้างขึ้นบนการแยกโมเดล (Editable) มุมมอง (TextView) และตัวควบคุม (InputConnection) เมื่อได้รับการโฟกัส EditText จะสร้าง InputConnection ซึ่งระบบป้อนข้อมูลจะส่งอักขระ การกดแป้นพิมพ์ และคำสั่งแก้ไขผ่านกลไกนี้ กลไกนี้รับประกันความเข้ากันได้กับวิธีการป้อนข้อมูลใด ๆ — ตั้งแต่แป้นพิมพ์เสมือนไปจนถึงแป้นพิมพ์ Bluetooth จริงและการป้อนด้วยเสียง

kotlin
val editText = EditText(context).apply {
    hint = "ป้อนข้อความ"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

คุณลักษณะหลักของ EditText

EditText มีคุณลักษณะหลายสิบรายการสำหรับการปรับแต่งพฤติกรรมและลักษณะที่ปรากฏอย่างละเอียด สามารถตั้งค่าได้ทั้งในเลย์เอาต์ XML และโดยการเขียนโปรแกรมผ่าน Kotlin หรือ Java คุณลักษณะแบ่งออกเป็นหมวดหมู่: การควบคุมข้อความ ข้อจำกัด การจัดแต่งภาพ และการโต้ตอบกับแป้นพิมพ์

คุณลักษณะคำอธิบายค่าตัวอย่าง
android:hintข้อความคำแนะนำที่แสดงในฟิลด์ว่าง"ป้อนอีเมล"
android:inputTypeโหมดป้อนข้อมูล (ข้อความ ตัวเลข รหัสผ่าน ฯลฯ)textEmailAddress
android:maxLinesจำนวนบรรทัดสูงสุด3
android:maxLengthความยาวข้อความสูงสุดเป็นอักขระ100
android:textColorHintสีของข้อความคำแนะนำ#999999

คุณลักษณะ android:hint เป็นหนึ่งในคุณลักษณะที่สำคัญที่สุด — จะบอกผู้ใช้ว่าคาดหวังข้อมูลใดในฟิลด์ เมื่อป้อนข้อความ คำแนะนำจะถูกซ่อนโดยอัตโนมัติ คำแนะนำไม่มีส่วนร่วมในการส่งฟอร์มและไม่ถูกบันทึกเป็นค่าฟิลด์ Material Design แนะนำให้ใช้ TextInputLayout พร้อมป้ายกำกับลอยแทนคำแนะนำธรรมดาเพื่อให้ดูทันสมัยยิ่งขึ้น

  • android:selectAllOnFocus — เลือกข้อความทั้งหมดเมื่อได้รับการโฟกัส (มีประโยชน์สำหรับฟิลด์ค้นหา)
  • android:maxLength — จำกัดจำนวนอักขระที่ป้อน โดยตัดส่วนที่เกิน
  • android:lines — กำหนดความสูงคงที่ของฟิลด์เป็นบรรทัด (แตกต่างจาก minLines)
  • android:gravity — การจัดแนวข้อความภายในฟิลด์: left, center, top ฯลฯ
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" />

โหมดป้อนข้อมูลและ inputType

คุณลักษณะ inputType กำหนดประเภทของแป้นพิมพ์ที่จะแสดงให้ผู้ใช้เห็นและอักขระใดที่อนุญาตให้ป้อนได้ เป็นบิตมาสก์ที่คลาสการป้อนข้อมูล (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) รวมกับตัวปรับแต่ง

แต่ละ โหมดป้อนข้อมูล ไม่เพียงเปลี่ยนเค้าโครงแป้นพิมพ์แต่ยังส่งผลต่อการประมวลผลข้อความด้วย: ในโหมดตัวเลขอนุญาตเฉพาะตัวเลขและตัวคั่นทศนิยม ในโหมดอีเมลจะใช้สัญลักษณ์ @ และส่วนขยายโดเมนได้ และในโหมดโทรศัพท์จะแสดงตัวเลขและสัญลักษณ์ +, #, * การเลือก inputType ที่ถูกต้องส่งผลกระทบอย่างมากต่อประสบการณ์ผู้ใช้ — แป้นพิมพ์ที่ไม่เหมาะสมบังคับให้ผู้ใช้เปลี่ยนโMode ทำให้เวลาในการกรอกฟอร์มเพิ่มขึ้น 30–50%

ตาม Material Design Guidelines (2025) แนะนำให้ใช้ inputType ที่เฉพาะเจาะจงที่สุดสำหรับแต่ละฟิลด์: textPassword สำหรับรหัสผ่าน numberDecimal สำหรับราคา phone สำหรับหมายเลขโทรศัพท์ textMultiLine สำหรับการป้อนหลายบรรทัด ซึ่งช่วยเร่งการกรอกฟอร์มและลดข้อผิดพลาดในการป้อนข้อมูล

kotlin
// การตั้งค่า inputType โดยการเขียนโปรแกรม
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

ตัวฟังของ EditText: TextWatcher และ OnEditorActionListener

TextWatcher เป็นอินเทอร์เฟซสำหรับติดตามการเปลี่ยนแปลงข้อความใน EditText แบบเรียลไทม์ ประกอบด้วยสามเมธอด: beforeTextChanged ถูกเรียกก่อนการเปลี่ยนแปลง onTextChanged ถูกเรียกระหว่างการเปลี่ยนแปลง afterTextChanged ถูกเรียกหลังจากการเปลี่ยนแปลงข้อความเสร็จสมบูรณ์ TextWatcher ใช้สำหรับการตรวจสอบความถูกต้องของการป้อนข้อมูล การนับอักขระ การค้นหา และการเติมข้อความอัตโนมัติ

OnEditorActionListener จัดการการดำเนินการของผู้ใช้บนแป้นพิมพ์: การกด Done (IME_ACTION_DONE), Search (IME_ACTION_SEARCH), Send (IME_ACTION_SEND), Next (IME_ACTION_NEXT) และอื่น ๆ ตัวฟังนี้มีประโยชน์อย่างยิ่งสำหรับการจัดระเบียบการนำทางฟอร์ม — เมื่อกด Next โฟกัสจะย้ายไปยังฟิลด์ถัดไปโดยอัตโนมัติ และเมื่อกด Done แป้นพิมพ์จะถูกซ่อนและดำเนินการส่ง

ตาม Android Developers Blog (2025) การใช้ OnEditorActionListener อย่างถูกต้องกับคุณลักษณะ android:imeOptions ช่วยให้สร้างฟอร์มที่ใช้งานง่ายโดยไม่ต้องมีปุ่มส่งเพิ่มเติม — ผู้ใช้กรอกฟิลด์และกด Done บนแป้นพิมพ์ ซึ่งจะเริ่มการบันทึกหรือค้นหา

kotlin
// TextWatcher สำหรับตรวจสอบอีเมล
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 สำหรับส่งฟอร์ม
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

ตัวอย่างโค้ดกับ EditText

มาดูตัวอย่างสมบูรณ์ของการสร้างหน้าจอเข้าสู่ระบบโดยใช้ EditText สำหรับป้อนอีเมลและรหัสผ่าน ตัวอย่างนี้แสดงการกำหนดค่า inputType การตรวจสอบความถูกต้องผ่าน TextWatcher และการจัดการการกดปุ่มเข้าสู่ระบบ

เลย์เอาต์ XML ของหน้าจอเข้าสู่ระบบ

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

การตั้งค่า 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
        }
    }
}

การจัดแต่ง EditText

EditText รองรับการปรับแต่งผ่านคุณลักษณะ XML ธีม และสไตล์ สามารถเปลี่ยนสีข้อความ สีคำแนะนำ สีขีดเส้นใต้ (backgroundTint) สไตล์แบบอักษร ขนาดข้อความ และอื่น ๆ อีกมากมาย Material Components มีธีม MaterialComponents.EditText พร้อมคุณลักษณะที่กำหนดเองรวมถึง boxStrokeColor, boxBackgroundColor และ endIconMode

ในการเปลี่ยนสีขีดเส้นใต้ของ EditText ให้ใช้คุณลักษณะ android:backgroundTint ซึ่งกำหนดสีสำหรับสถานะเริ่มต้นและสถานะโฟกัส ใน Material Design สีขีดเส้นใต้ถูกจัดการผ่าน colorPrimary ของธีม สำหรับการปรับแต่งอย่างสมบูรณ์ คุณสามารถสร้าง drawable ที่กำหนดเองสำหรับพื้นหลังในโฟลเดอร์ res/drawable

สไตล์คุณลักษณะผลลัพธ์
สีข้อความandroid:textColorเปลี่ยนสีของข้อความที่ป้อน
สีคำแนะนำandroid:textColorHintเปลี่ยนสีของข้อความคำแนะนำ
ขีดเส้นใต้android:backgroundTintเปลี่ยนสีเส้นใต้ฟิลด์
ขนาดแบบอักษรandroid:textSizeกำหนดขนาดข้อความเป็น sp
แบบอักษรandroid:fontFamilyใช้แบบอักษรที่กำหนดเอง

ในการสร้างสไตล์ที่สอดคล้องกันสำหรับฟิลด์ EditText ทั้งหมดในแอปของคุณ แนะนำให้กำหนดสไตล์ส่วนกลางในธีม Material Design มีสไตล์ Widget.MaterialComponents.TextInputLayout.OutlinedBox ซึ่งใช้โดยอัตโนมัติกับฟิลด์ป้อนข้อมูลทั้งหมดที่ใช้ TextInputLayout ซึ่งรับประกันลักษณะที่สอดคล้องกันโดยไม่ต้องทำซ้ำคุณลักษณะในทุกเลย์เอาต์

คำถามที่พบบ่อย

ความแตกต่างระหว่าง EditText และ TextView คืออะไร

EditText สืบทอดจาก TextView และเพิ่มความสามารถในการแก้ไขข้อความ TextView แสดงข้อความเท่านั้น ในขณะที่ EditText อนุญาตให้ผู้ใช้ป้อน ลบ และแก้ไขเนื้อหา EditText ยังรองรับ inputType, TextWatcher, การจัดการเคอร์เซอร์ และฟังก์ชันอื่น ๆ ที่เกี่ยวข้องกับการป้อนข้อมูล

จะจำกัดอักขระบางตัวใน EditText ได้อย่างไร

ใช้ InputFilter — อินเทอร์เฟซสำหรับกรองอักขระที่ป้อน EditText รองรับการตั้งค่าอาร์เรย์ของตัวกรองผ่านเมธอด setFilters() ตัวอย่างเช่น InputFilter.LengthFilter จำกัดความยาวข้อความ ในขณะที่ InputFilter ที่กำหนดเองสามารถจำกัดอักขระเฉพาะ นิพจน์ปกติ หรือช่วง Unicode

จะรับข้อความจาก EditText ในโค้ดได้อย่างไร

เรียก editText.text.toString() ใน Kotlin หรือ editText.getText().toString() ใน Java คุณสมบัติ text ส่งคืน Editable ซึ่งแปลงเป็น String ผ่าน toString() ตรวจสอบค่า null และว่างเสมอก่อนใช้ข้อความ โดยเฉพาะในฟอร์มที่มีฟิลด์บังคับ

จะทำให้ EditText เป็นหลายบรรทัดได้อย่างไร

ตั้งค่าคุณลักษณะ android:inputType="textMultiLine" หรือเพิ่มแฟล็ก InputType.TYPE_TEXT_FLAG_MULTI_LINE โดยการเขียนโปรแกรม ในโหมดหลายบรรทัด EditText อนุญาตให้ขึ้นบรรทัดใหม่ด้วย Enter และขยายความสูงโดยอัตโนมัติ ใช้ android:maxLines หรือ android:minLines เพื่อจำกัดความสูง

จะปิดการใช้งาน EditText สำหรับการแก้ไขได้อย่างไร

ตั้งค่าคุณลักษณะ android:enabled="false" หรือเรียก editText.isEnabled = false ในโค้ด EditText ที่ปิดใช้งานจะไม่ตอบสนองต่อการสัมผัส ไม่สามารถรับโฟกัส และแสดงเป็นสีเทา (สถานะปิดใช้งาน) ทางเลือกอื่นคือใช้ android:focusable="false" ซึ่งปิดการป้อนข้อมูลแต่คงลักษณะปกติไว้

สรุป

  • EditText — คอมโพเนนต์ป้อนข้อความพื้นฐานใน Android ซึ่งเป็นคลาสย่อยของ TextView ที่รองรับการแก้ไข
  • inputType กำหนดโหมดแป้นพิมพ์และอักขระที่อนุญาต: ข้อความ ตัวเลข อีเมล โทรศัพท์ รหัสผ่าน
  • TextWatcher อนุญาตให้ติดตามการเปลี่ยนแปลงข้อความแบบเรียลไทม์สำหรับการตรวจสอบและการเติมข้อความอัตโนมัติ
  • OnEditorActionListener จัดการการดำเนินการของแป้นพิมพ์: Done, Search, Next, Send
  • InputFilter จำกัดอักขระที่ป้อนและความยาวข้อความผ่านตัวกรองที่กำหนดเอง
  • คุณลักษณะ เช่น hint, maxLines, maxLength, textColorHint กำหนดค่าพฤติกรรมและลักษณะที่ปรากฏ
  • Material Design ผ่าน TextInputLayout ให้ลักษณะที่ทันสมัยด้วยป้ายกำกับลอยและข้อผิดพลาด

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม